forked from pisilinux-rs/yali-rs
b6f9af3b40e69759e9cd428ae5c6abb52adba267
Önceki commit bölümleme iş mantığını düzeltmişti. Burada `selected_disk`
değişkeninin taşıdığı belirsizlik gideriliyor ve kullanıcı kurulumdan
önce dağılımı tek ekranda görebiliyor.
## 1. selected_disk birden fazla şey ifade ediyordu
Dört ayrı yerde kullanılıyordu: yeni bölümlerin hedefi, çift şeridin
çizildiği disk, GRUB/InstallGrubJob hedefi ve bootloader_device'ın
varsayılanı. Kullanıcı tabloyu gezmek için ComboBox'u sdb'ye çevirince
GRUB da oraya yönlendiriyordu.
- Dış ComboBox'un etiketi "Kurulum Yapılacak Diski Seçin" idi ve bu
yanlış anlam çağrışımı yapıyordu. Artık "Aktif disk" + ne olduğunu
açıklayan bir ipucu metni. (Ayrıca hardcoded Türkçe etiket,
"Disk Seçin" de çeviriye alındı.)
- Yeni bölümlerin hedefi artık diyalogdaki disk seçiciden geliyor
(önceki commit), dolayısıyla dış ComboBox yalnızca vurgulamayı ve
varsayılan öneriyi etkiliyor.
- bootloader_device varsayılanı artık `selected_disk` değil, KÖKün
olduğu disk. partitioned_plan'a, yoksa selected_disk'a düşüyor.
## 2. Özet ekranı
Çoklu disk kurulumunda kullanıcı son durumu görmeli:
- Disk başlıkları kapasiteyi gösteriyor ("/dev/sdb (500 GB)")
- Her diskin altında "— boş: 120.0 GB" satırı
- Disk satırında kök diski "[kök]" etiketiyle işaretleniyor; GRUB
varsayılanı oraya kurulduğu için hangi diske önyükleme yazılacağı
belli olmalı.
Ekranda ⭐ emoji yerine düz metin etiket kullanıldı: setup_fonts
sistem + remixicon yüklüyor, renkli emoji fontu yorum satırında —
emoji kutu (tofu) olarak çıkardı.
## Locale dosyaları
Bu commit sırasında tr.toml/en.toml bozuldu (satır sonuna yapışan
düzenleme) ve rust-i18n proc macro derlemeyi durdurdu. Ayrıştırıcıyla
doğrulandı, `summary_manual_mode` değeri özgün haline döndürüldü.
cargo check --all-targets : 0 hata, 0 uyarı
cargo test : 76/76 geçti
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
YALI (Yet Another Linux Installer) — Rust / egui
A rewritten Pisi GNU/Linux installation tool in Rust and egui. YALI installs the system from the live environment, installs packages, and performs basic configuration. It is a modern, fast, and maintainable rewrite of the original Python/Qt version.
Features
- 10-step installation wizard: Welcome → Location → Keyboard → Network → Disk Partitioning → Users → Bootloader → Summary → Installation → Finish
- Squashfs-based: the installed system is copied from the ISO's squashfs, packages are not fetched over the network. The display manager, desktop environment and packages come from the ISO, so the wizard does not offer them (offering them would be misleading, since the copy would overwrite the choice)
- Two modes: Graphical interface (default) and automatic installation with answer file (
--auto-install answer.toml) - Demo mode: Skips system checks, simulates installation (
--demo) - Disk partitioning: Automatic (GPT/MBR) or manual, LVM and LUKS encryption support
- Network configuration: WiFi scanning (nmcli), proxy settings
- Bootloader: GRUB device/password/timeout settings, kernel parameters
- Rescue mode: Chroot, GRUB reinstallation, Pisi rollback
- OEM mode: Predefined settings for manufacturer pre-installation
- Internationalization: Turkish and English (with rust-i18n via TOML locale files)
- Branding system: Runtime-loadable
branding.tomlfor logo, slides, color settings - Theme: Dark/light theme, atomic color management, custom gradient buttons
- Async job queue: All installation steps run in separate
tokioruntime, UI updated viampscchannel - System checks: 8 pre-checks including RAM, disk space, internet, UEFI, CPU, NVMe
- Slideshow: Custom branded slides for 9 desktop environments
- Demo session cleanup: Removes live environment artifacts, adds production repository
Usage
# Normal installation (requires root)
sudo cargo run --release
# Demo mode (no root required)
cargo run --release -- --demo
# Automatic installation (with answer file)
sudo cargo run --release -- --auto-install answer.toml
# Slideshow test (standalone window, no root required)
cargo run --bin slides_test [desktop] [lang]
# E.g.: cargo run --bin slides_test xfce en
Project Structure
├── src/
│ ├── main.rs # Entry point, eframe App, GUI layout
│ ├── lib.rs # Library root (reserved for future DLL structure)
│ ├── installer.rs # InstallerStep trait, GlobalState, WelcomeStep
│ ├── funct.rs # Shared UI helpers (form fields, language selector)
│ ├── branding.rs # Branding.toml loader (logo, slides, theme, OEM)
│ ├── bin/
│ │ └── slides_test.rs # Standalone slideshow test binary
│ ├── ui/
│ │ ├── theme.rs # Colors, fonts, Visuals, section_heading, error/warning/success boxes
│ │ ├── buttons.rs # Gradient buttons (primary, secondary, danger, etc.)
│ │ ├── combobox.rs # ComboBox helpers (show_combo_box, selectable_value)
│ │ ├── combobox_stil.rs # ComboBox visual constants (weak_bg, border, text colors)
│ │ ├── slideshow.rs # Auto-advancing slideshow
│ │ └── error_screen.rs # Error screen (log viewer, copy, retry)
│ ├── steps/
│ │ ├── location.rs # Location/timezone + date/time
│ │ ├── license.rs # License agreement
│ │ ├── keyboard.rs # Keyboard layout/variant selection
│ │ ├── network.rs # Network configuration (WiFi, proxy)
│ │ ├── partition.rs # Disk partitioning (automatic + manual + LVM)
│ │ ├── users.rs # User account creation
│ │ ├── bootloader.rs # GRUB configuration
│ │ ├── summary.rs # Installation summary
│ │ ├── execution.rs # Installation execution (progress bar, log)
│ │ ├── finish.rs # Completion screen
│ │ ├── netinstall.rs # Extra package group selection
│ │ └── rescue.rs # Rescue mode (chroot, GRUB, Pisi takeback)
│ ├── jobs/mod.rs # Async job queue and all installation jobs
│ └── autoinstall/
│ ├── mod.rs # Answer file loading and state application
│ └── checker.rs # System pre-checks
├── locales/
│ ├── tr.toml # Turkish translations
│ └── en.toml # English translations
├── slides/
│ ├── img/ # Slide images (PNG)
│ ├── slides_tr.toml # Turkish slide content
│ └── slides_en.toml # English slide content
├── assets/
│ ├── icons/ # UI icons (YALI_icon_LIGHT.svg, language-icon.svg, etc.)
│ ├── flags/ # Country flags (~250 SVG)
│ └── pisi-logo-*.png # Distribution logos (branding `[general]`)
├── branding.toml # Default branding configuration
├── branding_en.toml # English branding
├── branding_tr.toml # Turkish branding
└── answer-example.toml # Example answer file
Installation Workflow
- Welcome — Language selection, system checks, rescue mode
- Location / Time — Timezone selection (region/area dual ComboBox), GeoIP, NTP or manual date/time
- Keyboard — Layout/variant selection, search, live preview (setxkbmap)
- Network — WiFi scanning, connection, proxy
- Disk Partitioning — Automatic (guided) or manual, LVM, LUKS
- Users — Account creation, password strength indicator, root password, autologin
- Bootloader — GRUB device, timeout, password, kernel parameters
- Summary — Review all selections
- Installation — Slideshow + progress bar + live log
- Finish — Successful installation, reboot or return to live desktop
Dependencies
| Dependency | Version | Purpose |
|---|---|---|
eframe |
0.27 (wgpu) | egui framework, WebGPU backend |
egui_extras |
0.27 (image, file, svg) | Image loading, file dialogs, SVG |
image |
0.24 | PNG decoding |
serde / toml |
1.0 / 0.8 | Branding and answer file serialization |
zbus |
4.0 | D-Bus communication (COMAR) |
tokio |
1.0 (full) | Async job queue |
sysinfo |
0.30 | System information (RAM, disk, OS) |
rust-i18n |
3.1 | Internationalization |
chrono |
0.4 | Date/time operations |
License
GNU General Public License v3.0
This project is developed by the Pisi GNU/Linux team.
Releases
1
yali-rs v4.0.3
Latest
Languages
Rust
98.8%
Makefile
1.2%