diff --git a/Cargo.toml b/Cargo.toml index eb8645e..83ff170 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] authors = ["Valeria Fadeeva <valeria@fadeeva.me>"] -name = "melawy-arch-linux-updater-tray" +name = "melawy-linux-updater-tray" version = "0.1.0" edition = "2021" @@ -11,6 +11,7 @@ edition = "2021" tray-item = { git = "https://github.com/olback/tray-item-rs", features = ["libappindicator"] } gtk = "0.18" glib = "0.20" +rust-i18n = "3" [build-dependencies] glib-build-tools = "0.20" diff --git a/README.md b/README.md index 16ffb62..f84ab9a 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ -# melawy-arch-linux-updater-tray -Melawy Arch Linux Updater Tray +# melawy-linux-updater-tray +Melawy Linux Updater Tray ### Donate [Tinkoff](https://www.tinkoff.ru/rm/fadeeva.valeriya96/9bLRi79066) diff --git a/locales/app.yml b/locales/app.yml new file mode 100644 index 0000000..d2b5c5d --- /dev/null +++ b/locales/app.yml @@ -0,0 +1,17 @@ +_version: 2 + +label.melawy_linux_updater: + en: Melawy Linux Updater + ru_RU.UTF-8: Установщик обновлений Melawy Linux + +menu.update_system: + en: Update system + ru_RU.UTF-8: Обновить систему + +menu.update_flatpak_applications: + en: Update flatpak applications + ru_RU.UTF-8: Обновить приложения flatpak + +menu.quit: + en: Quit + ru_RU.UTF-8: Выйти diff --git a/melawy-arch-linux-updater-tray.desktop b/melawy-arch-linux-updater-tray.desktop deleted file mode 100755 index 69afa56..0000000 --- a/melawy-arch-linux-updater-tray.desktop +++ /dev/null @@ -1,18 +0,0 @@ -#!/usr/bin/env xdg-open -[Desktop Entry] -Name=Melawy Arch Linux Updater Tray -Name[en_GB]=Melawy Arch Linux Updater Tray -Name[en_US]=Melawy Arch Linux Updater Tray -Name[ru_RU]=Melawy Arch Linux Иконка Обновления для Системного Трея -Name[ru]=Melawy Arch Linux Иконка Обновления для Системного Трея -Comment=Melawy Arch Linux Иконка Обновления для Системного Трея -Comment[en_GB]=Melawy Arch Linux Updater Tray -Comment[en_US]=Melawy Arch Linux Updater Tray -Comment[ru_RU]=Melawy Arch Linux Иконка Обновления для Системного Трея -Comment[ru]=Melawy Arch Linux Иконка Обновления для Системного Трея -Icon=software-store -Categories=System;Settings;Security; -Exec=/usr/bin/melawy-arch-linux-updater-tray -Type=Application -StartupNotify=true -Terminal=false diff --git a/melawy-linux-updater-tray.desktop b/melawy-linux-updater-tray.desktop new file mode 100755 index 0000000..9cd1011 --- /dev/null +++ b/melawy-linux-updater-tray.desktop @@ -0,0 +1,18 @@ +#!/usr/bin/env xdg-open +[Desktop Entry] +Name=Melawy Linux Updater Tray +Name[en_GB]=Melawy Linux Updater Tray +Name[en_US]=Melawy Linux Updater Tray +Name[ru_RU]=Melawy Linux Иконка Обновления для Системного Трея +Name[ru]=Melawy Linux Иконка Обновления для Системного Трея +Comment=Melawy Linux Иконка Обновления для Системного Трея +Comment[en_GB]=Melawy Linux Updater Tray +Comment[en_US]=Melawy Linux Updater Tray +Comment[ru_RU]=Melawy Linux Иконка Обновления для Системного Трея +Comment[ru]=Melawy Linux Иконка Обновления для Системного Трея +Icon=software-store +Categories=System;Settings;Security; +Exec=/usr/bin/melawy-linux-updater-tray +Type=Application +StartupNotify=true +Terminal=false diff --git a/src/main.rs b/src/main.rs index 4c80e69..e2cf11b 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,12 +1,12 @@ // #![cfg_attr(debug_assertions, allow(dead_code, unused_imports, unused_variables, unused_must_use))] +use rust_i18n::i18n; +use rust_i18n::t; +rust_i18n::i18n!("locales"); + use { - std::sync::mpsc, - std::thread, - std::time, - std::process::Command, - tray_item::IconSource, - tray_item::TrayItem, + std::env, std::process::Command, std::sync::mpsc, std::thread, std::time, + tray_item::IconSource, tray_item::TrayItem, }; // use subprocess; @@ -15,7 +15,7 @@ enum Message { Quit, NOP, UpdateSystem, - UpdateFlatpak + UpdateFlatpak, } fn run_cmd(cmd_string: &str, lang_env_var: Option<&str>) { @@ -24,16 +24,14 @@ fn run_cmd(cmd_string: &str, lang_env_var: Option<&str>) { std::env::set_var(key, lang_env_var.unwrap_or("C.UTF-8")); } - let args_vec : Vec<&str> = cmd_string.split_whitespace().collect(); + let args_vec: Vec<&str> = cmd_string.split_whitespace().collect(); if args_vec.len() == 1 { let cmd = args_vec[0]; let status = Command::new(cmd).output(); println!("{:#?}", status); - } - - else { + } else { let cmd = args_vec[0]; let new_args_vec = &args_vec[1..].to_vec(); @@ -43,45 +41,60 @@ fn run_cmd(cmd_string: &str, lang_env_var: Option<&str>) { } fn main() { + i18n!("locales", fallback = "en"); + + let locale_key = "LANG"; + let locale = match env::var(locale_key) { + Ok(val) => val, + _ => String::from(""), + }; + + rust_i18n::set_locale(&locale); + // let _locale = rust_i18n::locale(); + gtk::init().unwrap(); - let mut tray = TrayItem::new("Melawy Arch Linux Updater", IconSource::Resource("software-store")).unwrap(); + let mut tray = TrayItem::new( + &t!("label.melawy_linux_updater"), + IconSource::Resource("software-store"), + ) + .unwrap(); - tray.add_label("Melawy Arch Linux Updater").unwrap(); + tray.add_label(&t!("label.melawy_linux_updater")).unwrap(); let (tx, rx) = mpsc::sync_channel::<Message>(2); let update_system_tx = tx.clone(); - tray.add_menu_item("Update system", move|| { + tray.add_menu_item(&t!("menu.update_system"), move || { update_system_tx.send(Message::UpdateSystem).unwrap(); - }).unwrap(); - + }) + .unwrap(); let update_flatpak_tx = tx.clone(); - tray.add_menu_item("Update flatpak applications", move || { + tray.add_menu_item(&t!("menu.update_flatpak_applications"), move || { update_flatpak_tx.send(Message::UpdateFlatpak).unwrap(); - }).unwrap(); - + }) + .unwrap(); let quit_tx = tx.clone(); - tray.add_menu_item("Quit", move || { + tray.add_menu_item(&t!("menu.quit"), move || { quit_tx.send(Message::Quit).unwrap(); - }).unwrap(); - + }) + .unwrap(); glib::idle_add_local(move || match rx.recv() { Ok(Message::Quit) => { + // println!("Quit!"); gtk::main_quit(); - println!("Quit!"); glib::ControlFlow::Break } Ok(Message::UpdateSystem) => { - println!("Update system"); - let cmd = "sudo arch-linux-updater"; + // println!("Update system"); + let cmd = "sudo melawy-linux-updater"; let _ = run_cmd(cmd, None); glib::ControlFlow::Continue } Ok(Message::UpdateFlatpak) => { - println!("Update flatpak applications"); + // println!("Update flatpak applications"); let cmd = "/usr/bin/konsole --noclose --separate -e flatpak update"; let _ = run_cmd(cmd, None); glib::ControlFlow::Continue @@ -92,7 +105,6 @@ fn main() { } }); - thread::spawn(move || { let mut count = 0; loop {