This commit is contained in:
Valeria Fadeeva 2025-01-30 13:02:27 +05:00
parent 0f1ea9e57a
commit acee775350
6 changed files with 78 additions and 48 deletions

View File

@ -1,6 +1,6 @@
[package] [package]
authors = ["Valeria Fadeeva <valeria@fadeeva.me>"] authors = ["Valeria Fadeeva <valeria@fadeeva.me>"]
name = "melawy-arch-linux-updater-tray" name = "melawy-linux-updater-tray"
version = "0.1.0" version = "0.1.0"
edition = "2021" edition = "2021"
@ -11,6 +11,7 @@ edition = "2021"
tray-item = { git = "https://github.com/olback/tray-item-rs", features = ["libappindicator"] } tray-item = { git = "https://github.com/olback/tray-item-rs", features = ["libappindicator"] }
gtk = "0.18" gtk = "0.18"
glib = "0.20" glib = "0.20"
rust-i18n = "3"
[build-dependencies] [build-dependencies]
glib-build-tools = "0.20" glib-build-tools = "0.20"

View File

@ -1,5 +1,5 @@
# melawy-arch-linux-updater-tray # melawy-linux-updater-tray
Melawy Arch Linux Updater Tray Melawy Linux Updater Tray
### Donate ### Donate
[Tinkoff](https://www.tinkoff.ru/rm/fadeeva.valeriya96/9bLRi79066) [Tinkoff](https://www.tinkoff.ru/rm/fadeeva.valeriya96/9bLRi79066)

17
locales/app.yml Normal file
View File

@ -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: Выйти

View File

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

View File

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

View File

@ -1,12 +1,12 @@
// #![cfg_attr(debug_assertions, allow(dead_code, unused_imports, unused_variables, unused_must_use))] // #![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 { use {
std::sync::mpsc, std::env, std::process::Command, std::sync::mpsc, std::thread, std::time,
std::thread, tray_item::IconSource, tray_item::TrayItem,
std::time,
std::process::Command,
tray_item::IconSource,
tray_item::TrayItem,
}; };
// use subprocess; // use subprocess;
@ -15,7 +15,7 @@ enum Message {
Quit, Quit,
NOP, NOP,
UpdateSystem, UpdateSystem,
UpdateFlatpak UpdateFlatpak,
} }
fn run_cmd(cmd_string: &str, lang_env_var: Option<&str>) { 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")); 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 { if args_vec.len() == 1 {
let cmd = args_vec[0]; let cmd = args_vec[0];
let status = Command::new(cmd).output(); let status = Command::new(cmd).output();
println!("{:#?}", status); println!("{:#?}", status);
} } else {
else {
let cmd = args_vec[0]; let cmd = args_vec[0];
let new_args_vec = &args_vec[1..].to_vec(); 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() { 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(); 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 (tx, rx) = mpsc::sync_channel::<Message>(2);
let update_system_tx = tx.clone(); 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(); update_system_tx.send(Message::UpdateSystem).unwrap();
}).unwrap(); })
.unwrap();
let update_flatpak_tx = tx.clone(); 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(); update_flatpak_tx.send(Message::UpdateFlatpak).unwrap();
}).unwrap(); })
.unwrap();
let quit_tx = tx.clone(); 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(); quit_tx.send(Message::Quit).unwrap();
}).unwrap(); })
.unwrap();
glib::idle_add_local(move || match rx.recv() { glib::idle_add_local(move || match rx.recv() {
Ok(Message::Quit) => { Ok(Message::Quit) => {
// println!("Quit!");
gtk::main_quit(); gtk::main_quit();
println!("Quit!");
glib::ControlFlow::Break glib::ControlFlow::Break
} }
Ok(Message::UpdateSystem) => { Ok(Message::UpdateSystem) => {
println!("Update system"); // println!("Update system");
let cmd = "sudo arch-linux-updater"; let cmd = "sudo melawy-linux-updater";
let _ = run_cmd(cmd, None); let _ = run_cmd(cmd, None);
glib::ControlFlow::Continue glib::ControlFlow::Continue
} }
Ok(Message::UpdateFlatpak) => { Ok(Message::UpdateFlatpak) => {
println!("Update flatpak applications"); // println!("Update flatpak applications");
let cmd = "/usr/bin/konsole --noclose --separate -e flatpak update"; let cmd = "/usr/bin/konsole --noclose --separate -e flatpak update";
let _ = run_cmd(cmd, None); let _ = run_cmd(cmd, None);
glib::ControlFlow::Continue glib::ControlFlow::Continue
@ -92,7 +105,6 @@ fn main() {
} }
}); });
thread::spawn(move || { thread::spawn(move || {
let mut count = 0; let mut count = 0;
loop { loop {