Update
This commit is contained in:
parent
0f1ea9e57a
commit
acee775350
|
@ -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"
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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: Выйти
|
|
@ -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
|
|
|
@ -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
|
66
src/main.rs
66
src/main.rs
|
@ -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 {
|
||||||
|
|
Loading…
Reference in New Issue