From 20dc937ab87bac6e89f45a22c4ec1480262544ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erkan=20I=C5=9EIK?= Date: Thu, 23 Jul 2026 17:13:05 +0300 Subject: [PATCH] =?UTF-8?q?fix:=20GPU=20karakter=20bozulmas=C4=B1=20i?= =?UTF-8?q?=C3=A7in=20repaint=20throttle;=20slideshow=20emoji=20ikonlar?= =?UTF-8?q?=C4=B1;=20partition=20auto=20FS;=20=C3=A7e=C5=9Fitli=20f32=20ti?= =?UTF-8?q?p=20d=C3=BCzeltmeleri?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Makefile | 2 -- assets/yali.png | Bin 19075 -> 0 bytes slides/slides_tr.toml | 20 +++++++++--------- src/funct.rs | 4 ++-- src/jobs/mod.rs | 43 ++++++++++++++++++++++++++++++++++----- src/main.rs | 2 +- src/steps/partition.rs | 26 ++++++++++++++++++------ src/ui/buttons.rs | 2 +- src/ui/combobox_stil.rs | 12 +++++------ src/ui/error_screen.rs | 2 +- src/ui/slideshow.rs | 44 +++++++++++++++++++++++++++++++++++++++- src/ui/theme.rs | 16 +++++++-------- 12 files changed, 130 insertions(+), 43 deletions(-) delete mode 100644 assets/yali.png diff --git a/Makefile b/Makefile index 602780e..c29e16b 100644 --- a/Makefile +++ b/Makefile @@ -131,8 +131,6 @@ install: release # .desktop girdisi install -Dm644 assets/yali.desktop $(DESTDIR)$(DESKTOPDIR)/yali.desktop - # Logo (pixmap) - install -Dm644 assets/yali.png $(DESTDIR)$(PIXMAPDIR)/yali.png @echo "$(BOLD)$(GREEN)✓ Kurulum tamamlandı$(RESET)" diff --git a/assets/yali.png b/assets/yali.png deleted file mode 100644 index 20c2cc3b7acd2597398170889ed1ffad3a2c0a63..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19075 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 ile `egui::Context` birlikte taşır. -/// Her mesaj gönderiminde `request_repaint()` çağrısı UI'yi uyandırır. -#[derive(Clone)] +/// Mesaj gönderiminde `request_repaint()` çağrısı UI'yi uyandırır, +/// ancak en fazla saniyede ~30 kez (33ms aralıkla) olacak şekilde +/// throttle edilir. Bu, özellikle rsync gibi yoğun I/O işlemleri +/// sırasında Intel tümleşik GPU'lu (UMA) sistemlerde GPU belleği +/// rekabetini önler ve karakter bozulmasını engeller. pub struct UiSender { tx: mpsc::Sender, ctx: eframe::egui::Context, + last_repaint: std::sync::Arc>, +} + +impl Clone for UiSender { + fn clone(&self) -> Self { + Self { + tx: self.tx.clone(), + ctx: self.ctx.clone(), + last_repaint: self.last_repaint.clone(), + } + } } impl UiSender { pub fn new(tx: mpsc::Sender, ctx: eframe::egui::Context) -> Self { - Self { tx, ctx } + Self { + tx, + ctx, + last_repaint: std::sync::Arc::new(std::sync::Mutex::new(Instant::now())), + } } pub fn send(&self, msg: InstallMessage) { let _ = self.tx.send(msg); - self.ctx.request_repaint(); + let mut last = self.last_repaint.lock().unwrap(); + if last.elapsed() >= std::time::Duration::from_millis(33) { + self.ctx.request_repaint(); + *last = Instant::now(); + } } pub fn log(&self, s: impl Into) { @@ -301,6 +324,8 @@ impl Job for CopyFilesJob { let reader = BufReader::new(stdout); let mut lines = reader.lines(); let mut file_count: u64 = 0; + // Son UI güncellemesi — çok sık güncelleme GPU (özellikle Intel UMA) baskısını azaltır + let mut last_update = Instant::now(); while let Some(line) = lines.next_line().await .map_err(|e| format!("rsync çıktısı okunamadı: {}", e))? @@ -311,7 +336,15 @@ impl Job for CopyFilesJob { } file_count += 1; - ui.current_file(trimmed); + + let now = Instant::now(); + if now.duration_since(last_update) >= std::time::Duration::from_millis(50) + || file_count == 1 + || trimmed.contains("Packages") || trimmed.contains("package") + { + ui.current_file(trimmed); + last_update = now; + } if total_files > 0 { let p = (file_count as f32) / (total_files as f32); diff --git a/src/main.rs b/src/main.rs index 3497e6b..1f2333d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -438,7 +438,7 @@ impl eframe::App for YaliApp { egui::TopBottomPanel::bottom("footer") .frame(egui::Frame::none() .fill(ui::theme::c_footer_bg()) - .stroke(egui::Stroke::new(1.0, ui::theme::c_footer_bg()))) + .stroke(egui::Stroke::new(1.0_f32, ui::theme::c_footer_bg()))) .show(ctx, |ui| { ui.add_space(10.0); ui.horizontal(|ui| { diff --git a/src/steps/partition.rs b/src/steps/partition.rs index e595ecd..45989c7 100644 --- a/src/steps/partition.rs +++ b/src/steps/partition.rs @@ -438,7 +438,7 @@ impl PartitionStep { egui::Color32::from_rgba_unmultiplied(237, 237, 224, 1) }) .stroke(egui::Stroke::new( - if selected { 2.0 } else { 1.0 }, + if selected { 2.0_f32 } else { 1.0_f32 }, if selected { crate::ui::theme::c_accent() } else { crate::ui::theme::c_border() }, )) .rounding(egui::Rounding::same(8.0)) @@ -538,7 +538,7 @@ impl PartitionStep { }); egui::Frame::none() - .stroke(egui::Stroke::new(1.0, crate::ui::theme::c_border())) + .stroke(egui::Stroke::new(1.0_f32, crate::ui::theme::c_border())) .rounding(egui::Rounding::same(6.0)) .show(ui, |ui| { let tam = ui.available_width(); @@ -673,7 +673,7 @@ impl PartitionStep { egui::Color32::from_rgba_unmultiplied(237, 237, 224, 1) }) .stroke(egui::Stroke::new( - if selected { 2.0 } else { 1.0 }, + if selected { 2.0_f32 } else { 1.0_f32 }, if selected { crate::ui::theme::c_accent() } else { crate::ui::theme::c_border() }, )) .rounding(egui::Rounding::same(8.0)) @@ -747,7 +747,7 @@ impl PartitionStep { let tam_genislik = ui.available_width(); let header_color = egui::Color32::from_rgb(33, 37, 41); let header_text = egui::Color32::WHITE; - let _border_stroke = egui::Stroke::new(1.0, crate::ui::theme::c_border()); + let _border_stroke = egui::Stroke::new(1.0_f32, crate::ui::theme::c_border()); // ── Başlık satırı ───────────────────────────────── let headers: [String; 4] = [ @@ -767,7 +767,7 @@ impl PartitionStep { let child_ui = &mut ui.child_ui(rect, egui::Layout::top_down(egui::Align::Center)); egui::Frame::none() .fill(header_color) - .stroke(egui::Stroke::new(1.0, header_color)) + .stroke(egui::Stroke::new(1.0_f32, header_color)) .inner_margin(egui::Margin::symmetric(8.0, 4.0)) .show(child_ui, |ui| { ui.label(egui::RichText::new(h).strong().color(header_text).size(13.0)); @@ -900,7 +900,6 @@ impl PartitionStep { let next_num = state.custom_partitions.len() + 1; self.manual.add_size_str.clear(); self.manual.add_mountpoint.clear(); - self.manual.add_fstype = 0; self.manual.add_encrypt = false; self.manual.add_luks_password.clear(); self.manual.add_mountpoint = match next_num { @@ -911,6 +910,11 @@ impl PartitionStep { 3 => "/".to_string(), _ => String::new(), }; + self.manual.add_fstype = match self.manual.add_mountpoint.as_str() { + "swap" => FS_OPTIONS.iter().position(|(_, t)| *t == FsType::Swap).unwrap_or(0), + "/boot/efi" => FS_OPTIONS.iter().position(|(_, t)| *t == FsType::Fat32).unwrap_or(0), + _ => 0, + }; } // Düzenle @@ -1044,6 +1048,16 @@ impl PartitionStep { ); }); + // mountpoint "swap" seçildiğinde FS tipini otomatik swap yap + let mp = self.manual.add_mountpoint.trim().to_lowercase(); + let current_fs = FS_OPTIONS.get(self.manual.add_fstype).map(|x| &x.1); + let idx = |fs: FsType| FS_OPTIONS.iter().position(|(_, t)| *t == fs).unwrap_or(0); + if mp == "swap" && current_fs != Some(&FsType::Swap) { + self.manual.add_fstype = idx(FsType::Swap); + } else if mp == "/boot/efi" && current_fs != Some(&FsType::Fat32) { + self.manual.add_fstype = idx(FsType::Fat32); + } + ui.add_space(6.0); ui.separator(); diff --git a/src/ui/buttons.rs b/src/ui/buttons.rs index 88fc354..f68d5e4 100644 --- a/src/ui/buttons.rs +++ b/src/ui/buttons.rs @@ -56,7 +56,7 @@ fn gradient_button(ui: &mut egui::Ui, text: &str, top_color: Color32, bottom_col ui.painter().rect(strip_rect, Rounding::ZERO, c, Stroke::NONE); } - ui.painter().rect(rect, rounding, Color32::TRANSPARENT, Stroke::new(1.0, actual_border)); + ui.painter().rect(rect, rounding, Color32::TRANSPARENT, Stroke::new(1.0_f32, actual_border)); ui.painter().galley( egui::pos2(rect.center().x - galley.size().x / 2.0, rect.center().y - galley.size().y / 2.0), diff --git a/src/ui/combobox_stil.rs b/src/ui/combobox_stil.rs index 96f8480..8f0f18e 100644 --- a/src/ui/combobox_stil.rs +++ b/src/ui/combobox_stil.rs @@ -7,13 +7,13 @@ pub fn apply_visuals(v: &mut egui::Visuals) { v.widgets.hovered.weak_bg_fill = Color32::from_rgb(200, 200, 200); v.widgets.active.weak_bg_fill = Color32::from_rgb(180, 180, 180); - v.widgets.inactive.fg_stroke = Stroke::new(1.0, Color32::from_rgb(50, 50, 50)); - v.widgets.hovered.fg_stroke = Stroke::new(1.5, Color32::WHITE); - v.widgets.active.fg_stroke = Stroke::new(2.0, Color32::WHITE); + v.widgets.inactive.fg_stroke = Stroke::new(1.0_f32, Color32::from_rgb(50, 50, 50)); + v.widgets.hovered.fg_stroke = Stroke::new(1.5_f32, Color32::WHITE); + v.widgets.active.fg_stroke = Stroke::new(2.0_f32, Color32::WHITE); - v.widgets.inactive.bg_stroke = Stroke::new(1.0, Color32::from_rgb(155, 155, 155)); - v.widgets.hovered.bg_stroke = Stroke::new(1.0, Color32::from_rgb(155, 155, 155)); - v.widgets.active.bg_stroke = Stroke::new(1.0, Color32::from_rgb(155, 155, 155)); + v.widgets.inactive.bg_stroke = Stroke::new(1.0_f32, Color32::from_rgb(155, 155, 155)); + v.widgets.hovered.bg_stroke = Stroke::new(1.0_f32, Color32::from_rgb(155, 155, 155)); + v.widgets.active.bg_stroke = Stroke::new(1.0_f32, Color32::from_rgb(155, 155, 155)); } fn is_dark_ui(ui: &egui::Ui) -> bool { diff --git a/src/ui/error_screen.rs b/src/ui/error_screen.rs index 7d78a1c..0a528ec 100644 --- a/src/ui/error_screen.rs +++ b/src/ui/error_screen.rs @@ -68,7 +68,7 @@ impl ErrorScreen { // ── Hata mesajı ─────────────────────────────── egui::Frame::none() .fill(egui::Color32::from_rgba_unmultiplied(0xF4, 0x43, 0x36, 18)) - .stroke(egui::Stroke::new(1.0, theme::c_error())) + .stroke(egui::Stroke::new(1.0_f32, theme::c_error())) .rounding(egui::Rounding::same(8.0)) .inner_margin(egui::Margin::same(12.0)) .show(ui, |ui| { diff --git a/src/ui/slideshow.rs b/src/ui/slideshow.rs index 147ef47..ce63cbb 100644 --- a/src/ui/slideshow.rs +++ b/src/ui/slideshow.rs @@ -363,8 +363,50 @@ impl Slideshow { .rounding(egui::Rounding::same(8.0)), ); } else { + let emoji = match slide.icon { + "pisilogo" | "pisi" => "\u{1f427}", + "community" => "\u{1f465}", + "pisi_speed" => "\u{26a1}", + "securety" => "\u{1f512}", + "customization" => "\u{1f3a8}", + "budgie" => "\u{1f98e}", + "budgie_applets" => "\u{1f9e9}", + "budgie_raven" => "\u{1f426}", + "budgie_gtk_theme" => "\u{1f3ad}", + "cinnamon" => "\u{1f36e}", + "cinnamon_panel" => "\u{1f4cb}", + "cinnamon_settings" => "\u{2699}\u{fe0f}", + "cinnamon_desklets" => "\u{1f4cc}", + "gnome" => "\u{1f9d1}\u{200d}\u{1f4bb}", + "gnome_search" => "\u{1f50d}", + "gnome_extensions" => "\u{1f9e9}", + "kde" => "\u{1f48e}", + "file_manager" => "\u{1f4c1}", + "kde_connect" => "\u{1f4f1}", + "discover" => "\u{1f6cd}\u{fe0f}", + "lxde" => "\u{1f5a5}\u{fe0f}", + "lxde_openbox" => "\u{1f4e6}", + "lxde_lxpanel" => "\u{1f4ca}", + "lxde_pcmanfm" => "\u{1f4c2}", + "lxqt" => "\u{1f5a5}\u{fe0f}", + "lxqt_panel" => "\u{1f4cb}", + "lxqt_pcmanfm_qt" => "\u{1f4c2}", + "lumina" => "\u{1f31f}", + "lumina_applications" => "\u{1f4f1}", + "lumina_theme" => "\u{1f3a8}", + "lumina_panel" => "\u{1f4cb}", + "mate" => "\u{1f9c9}", + "mate_caja" => "\u{1f4c2}", + "mate_settings" => "\u{2699}\u{fe0f}", + "mate_applications" => "\u{1f4f1}", + "xfce" => "\u{1f42d}", + "xfce_panel" => "\u{1f4cb}", + "xfce_thunar" => "\u{1f4c2}", + "xfce_settings" => "\u{2699}\u{fe0f}", + _ => "\u{1f5bc}\u{fe0f}", + }; ui.label( - egui::RichText::new(slide.icon) + egui::RichText::new(emoji) .size(48.0), ); } diff --git a/src/ui/theme.rs b/src/ui/theme.rs index 5f0e873..9115376 100644 --- a/src/ui/theme.rs +++ b/src/ui/theme.rs @@ -187,7 +187,7 @@ fn build_visuals(is_dark: bool) -> Visuals { v.override_text_color = None; // ─── KENARLIKLAR (Calamares Uyumu için İnce İnce Yumuşatıldı) ─────────────────── - v.widgets.noninteractive.bg_stroke = Stroke::new(1.0, c_border()); + v.widgets.noninteractive.bg_stroke = Stroke::new(1.0_f32, c_border()); // ─── WIDGET DOLGULARI (Burası ComboBox ve Butonların Kaderini Belirliyor) ─────── v.widgets.noninteractive.bg_fill = c_bg_widget(); @@ -205,7 +205,7 @@ fn build_visuals(is_dark: bool) -> Visuals { crate::ui::combobox_stil::apply_visuals(&mut v); // ─── METİN RENKLERİ ──────────────────────────────────────────────────────────── - v.widgets.noninteractive.fg_stroke = Stroke::new(1.0, c_text()); + v.widgets.noninteractive.fg_stroke = Stroke::new(1.0_f32, c_text()); // ─── YUVARLAK KÖŞELER (Zaten 6.0'dı, Tam İstediğin Calamares Kıvamında) ───────── v.widgets.noninteractive.rounding = Rounding::same(6.0); @@ -215,13 +215,13 @@ fn build_visuals(is_dark: bool) -> Visuals { // Seçim rengi v.selection.bg_fill = c_accent_dim(); - v.selection.stroke = Stroke::new(1.0, c_accent()); + v.selection.stroke = Stroke::new(1.0_f32, c_accent()); // Hyperlink v.hyperlink_color = c_accent(); // Pencere kenarlığı - v.window_stroke = Stroke::new(1.0, c_border()); + v.window_stroke = Stroke::new(1.0_f32, c_border()); v.window_rounding = Rounding::same(8.0); v.interact_cursor = Some(egui::CursorIcon::PointingHand); @@ -268,7 +268,7 @@ pub fn section_heading(ui: &mut egui::Ui, text: &str) { let (rect, _) = ui.allocate_exact_size(Vec2::new(ui.available_width(), 1.0), egui::Sense::hover()); ui.painter().line_segment( [rect.left_center(), rect.right_center()], - Stroke::new(1.0, c_accent_dim()), + Stroke::new(1.0_f32, c_accent_dim()), ); ui.add_space(8.0); } @@ -277,7 +277,7 @@ pub fn section_heading(ui: &mut egui::Ui, text: &str) { pub fn error_box(ui: &mut egui::Ui, msg: &str) { egui::Frame::none() .fill(Color32::from_rgba_unmultiplied(0xF4, 0x43, 0x36, 20)) - .stroke(Stroke::new(1.0, c_error())) + .stroke(Stroke::new(1.0_f32, c_error())) .rounding(Rounding::same(6.0)) .inner_margin(egui::Margin::same(10.0)) .show(ui, |ui| { @@ -294,7 +294,7 @@ pub fn error_box(ui: &mut egui::Ui, msg: &str) { pub fn warning_box(ui: &mut egui::Ui, msg: &str) { egui::Frame::none() .fill(Color32::from_rgba_unmultiplied(0xFF, 0x98, 0x00, 20)) - .stroke(Stroke::new(1.0, c_warning())) + .stroke(Stroke::new(1.0_f32, c_warning())) .rounding(Rounding::same(6.0)) .inner_margin(egui::Margin::same(10.0)) .show(ui, |ui| { @@ -311,7 +311,7 @@ pub fn warning_box(ui: &mut egui::Ui, msg: &str) { pub fn success_box(ui: &mut egui::Ui, msg: &str) { egui::Frame::none() .fill(Color32::from_rgba_unmultiplied(0x4C, 0xAF, 0x50, 20)) - .stroke(Stroke::new(1.0, c_success())) + .stroke(Stroke::new(1.0_f32, c_success())) .rounding(Rounding::same(6.0)) .inner_margin(egui::Margin::same(10.0)) .show(ui, |ui| {