Commit Graph

194 Commits

Author SHA1 Message Date
nocode 8e2fc2ec6a refactor(fws-recovery): restructure recovery script with subcommands and GUI support
Split monolithic script into modular functions and add subcommand interface:

- Add scan subcommand to list FWS installations
- Add repair subcommand with actions: grub, initramfs, pacman, pacman-update, all
- Add shell subcommand for chroot terminal access
- Implement support for operating on running system (no mount/chroot needed)
- Extract detection and mounting logic into reusable functions
- Add in_target() helper to execute commands in target (chroot or direct)
- Improve mkinitcpio warning documentation
- Maintain backward-compatible TUI mode when no args provided
- Enable GUI (fws-recovery-gui) to pilot repairs via subcommands
2026-07-07 02:46:30 +02:00
nocode c7221247f2 fix(fws-about): update distribution description to be more generic
Change the description from "Une distribution Arch Linux" to "Une distribution Linux" to better reflect the project's identity and avoid limiting it to Arch Linux specifically.
2026-07-07 02:46:20 +02:00
nocode 57f86ef5f7 chore(syslinux): remove legacy syslinux linux configuration file
Remove the outdated syslinux-linux.cfg configuration file from the baseline syslinux directory. This file is no longer needed as the project has moved away from syslinux-based boot configurations.
2026-07-07 02:46:11 +02:00
nocode a9ba4be111 chore(baseline): add file permissions for recovery tools and grub config
Add file permission entries for new recovery-related executables and grub configuration:
- /usr/local/bin/fws-recovery-session
- /usr/local/bin/fws-recovery-gui
- /etc/grub.d/42_fws-recovery

All entries set to 0:0:755 (root owner, executable).
2026-07-07 02:46:01 +02:00
nocode 6f5fc95e82 feat(baseline): add zram-generator package 2026-07-07 02:45:52 +02:00
nocode 680ee39e94 fix(baseline): update recovery boot flow to use X with gtk application
Changed recovery mode (fws.recovery=1) to start X server with the GTK recovery application (fws-recovery-session) instead of directly launching the console assistant. This provides a graphical interface when possible, with a fallback to the console assistant if X fails to start.

Also updated comments to clarify the different recovery mechanisms on the live ISO versus the installed system.
2026-07-07 02:45:47 +02:00
nocode ec442193f5 feat(xinitrc): enhance anaconda startup splash with better diagnostics and feedback
Add memory check warning for systems with less than 2GB RAM.

Replace simple pulsing splash with active monitoring that displays:
- Real-time anaconda activity from log files
- Elapsed time and current operation
- Stall detection after 4 minutes of inactivity
- Automatic diagnostic report collection (journal, dmesg, udev status)
- Detection of GUI readiness to auto-hide splash

Add anaconda branding environment variables (ANACONDA_PRODUCTNAME,
ANACONDA_PRODUCTVERSION, ANACONDA_ISFINAL) to show "FWS" instead of
"Fedora" in installer headers and logs.

Improve splash cleanup to handle both feeder process and optional
diagnostic dialogs.
2026-07-07 02:45:32 +02:00
nocode a0fc2c1019 chore(releng): add zenity, xterm, and fws-dnd to installer packages
Add zenity for graphical dialogs in the installer, xterm for terminal debugging and Openbox menu entry, and fws-dnd for D&D 5e management functionality (dice, characters, grimoire, sessions, combat).
2026-07-06 18:40:42 +02:00
nocode 9e62cedff0 feat(anaconda): add desktop installation retry mechanism for network failures
Implement a robust desktop installation retry system that handles transient network issues during the Arch installation process.

Changes:
- Create fws-desktop-retry script in /usr/local/bin for manual recovery after installation
- Add DNS resolution wait loop (up to 10 attempts with 3-second intervals)
- Implement pacman retry logic with up to 3 attempts (15-second delay between retries)
- Generate /var/lib/fws/desktop-failed marker file on installation failure
- Create informative MOTD message guiding users to retry desktop installation
- Preserve FWS-specific MOTD when it contains retry instructions

This allows users to recover from network/mirror failures without reinstalling the entire system.
2026-07-06 18:40:37 +02:00
nocode bfd43ff41a refactor(baseline syslinux)!: restructure syslinux configuration for multi-boot selection
Replace simple serial-based menu with system detection logic using whichsys.c32 to automatically select between PXE and direct system boot. This enables dynamic boot method selection while maintaining support for both boot scenarios.

BREAKING CHANGE: Changes syslinux.cfg structure from single menu-based boot to conditional boot selection. Systems relying on the previous serial menu interface and default 'arch' label will need to adapt to the new whichsys-based selection mechanism.
2026-07-06 18:40:32 +02:00
nocode 6fb48bd3a8 chore(pacman): remove fws-local repository configuration
Remove the custom fws-local repository section from the baseline pacman configuration. This local repository reference is no longer needed in the baseline setup.
2026-07-06 18:40:27 +02:00
nocode 61fa81dd24 feat(baseline): add firewalld to baseline packages
Include firewalld in the baseline x86_64 package list for system firewall management capabilities.
2026-07-06 18:40:23 +02:00
nocode 45ff906097 chore(efiboot): update efifi boot loader entry configuration
Update the UEFI boot loader entry to reflect FWS install medium branding, add sort-key directive for boot order control, align configuration formatting, and increase udev event timeout to 45 seconds for improved hardware compatibility during boot.
2026-07-06 18:40:19 +02:00
nocode 2daac4a455 docs(readme): clarify baseline and releng config merge rules
Expand the ISO branding documentation to include a detailed warning about the build process where baseline configs overwrite releng configs. Add a list of critical files that must be kept in sync between both profiles (profiledef.sh, packages.x86_64, pacman.conf, efiboot/loader/entries/01-archiso-linux.conf, syslinux/syslinux.cfg) and include a verification command to detect file divergences. This prevents silent data loss from config mismatches during the build.
2026-07-06 18:40:10 +02:00
nocode d65f08cfad fix(i3-config): disable picom in virtual machines to prevent rendering artifacts
picom's GPU compositing causes GTK window repaint issues in virtual environments (vmwgfx/llvmpipe), resulting in black content and visual artifacts. Use systemd-detect-virt to skip picom execution on VMs while keeping it enabled on real hardware.

The rounded corners feature is sacrificed in VM environments to maintain stable window rendering.
2026-07-04 14:10:27 +02:00
nocode 7268e7e23d docs(readme): document anaconda integration and fws tooling comprehensive updates
Update README to reflect completed Anaconda 45 integration on Arch Linux, replacing Calamares. Document:

- Desktop choices (GNOME, KDE Plasma, XFCE, Hyprland, i3) with VR compatibility matrix
- Installation flow: Anaconda hub with FWS spokes, LiveOS payload, recap page before write
- fws-* tooling ecosystem: fws-hello, fws-update, fws-keys, fws-powermenu, fws-about, fws-vr-setup, fws-proton-ge, fws-recovery
- Hyprland & i3 visual parity: Catppuccin Mocha theme, waybar/polybar, wofi/rofi, custom SDDM theme
- Boot sequence: menu entries (normal, safe graphics, recovery, speech) → Openbox live → Anaconda → recap → installation
- Build process: incremental AUR + local PKGBUILD compilation (anaconda stack)
- Expanded troubleshooting: VM rendering issues, SteamVR, Bluetooth, recovery mode, BIOS/UEFI boot
- Log locations for live and post-install debugging
- Clarified file locations: kickstart, spokes, configs, tools, branding
2026-07-04 14:10:15 +02:00
nocode d4bef2fe91 chore(releng): add fws-about desktop entry file
Add desktop entry file for the FWS About application with localized names and metadata for system integration.
2026-07-04 13:43:54 +02:00
nocode a1255eb5c6 build(releng): hide xfce4-about application from menus
Add desktop entry file to hide the xfce4-about application from application menus. Since xfce4-about is a dependency of Thunar through libxfce4ui and does not require a full XFCE session, this entry prevents it from appearing in application launchers by leveraging XDG_DATA_DIRS priority where /usr/local/share takes precedence over /usr/share.
2026-07-04 13:43:50 +02:00
nocode cbdb386ba0 feat(powermenu): add fws-powermenu universal power menu utility
Add a Python-based power menu script that works with both Hyprland (Wayland) and i3 (X11) desktop environments. Supports lock, logout, suspend, reboot, and poweroff actions with appropriate display server backends (wofi for Hyprland, rofi for i3).
2026-07-04 13:43:45 +02:00
nocode 4df4b2bff3 feat(fws-about): add fws-about dialog application for system information
Add a new GTK3-based Python application that displays an "About FWS" dialog with two tabs:

- "Le projet FWS" tab: shows project name, description, features, and home URL
- "Système" tab: displays system information including OS, kernel, desktop environment, hardware (CPU, memory, GPUs, disks)

The application detects system information from /proc, lsblk, lspci, and environment variables. It replaces the default Xfce About dialog with FWS branding.
2026-07-04 13:43:39 +02:00
nocode 73cf60e876 chore(releng): add fws-powermenu and fws-about to file permissions 2026-07-04 13:43:32 +02:00
nocode 07ff62af55 chore(anaconda): replace thunar with dolphin and gvfs with udisks2 in desktop environments
Update package lists for Hyprland and i3 desktop environments:
- Replace thunar file manager with dolphin (KDE's file manager)
- Add kio-extras for dolphin functionality
- Replace gvfs with udisks2 for USB mounting
- Update comments to reflect new mount mechanism

This change improves consistency and provides better integration for the respective desktop environments.
2026-07-04 13:43:29 +02:00
nocode 22a95badcf style(waybar): add custom power button styling
Add styling for custom power button with Catppuccin color scheme.

- Default color: #f38ba8 (rouge doux)
- Hover color: #ff6b81 (lighter red)
2026-07-04 13:42:44 +02:00
nocode a1adefe890 feat(waybar): add power menu module to waybar config
Add custom power menu module to waybar configuration with power icon and SUPER+X keyboard shortcut that launches fws-powermenu utility.
2026-07-04 13:42:41 +02:00
nocode 1f465bf647 feat(polybar): add power module to polybar configuration
Add a new power module to the polybar configuration that displays a power icon and triggers the fws-powermenu command on click. The module is styled with red foreground color and integrated into the modules-right bar.
2026-07-04 13:42:37 +02:00
nocode ba2dc4637e chore(i3-config): update file manager and add new keybindings and window rules
- Change default file manager from thunar to dolphin
- Add $mod+x keybinding for fws-powermenu (power menu)
- Add floating window rules for fws-hello and fws-about dialogs
2026-07-04 13:42:32 +02:00
nocode ccdbdf4adf chore(hyprland): update hyprland config with dolphin, powermenu binding, and window rules
Replace thunar file manager with dolphin for consistency.
Add power menu keybinding (Super+X) for shutdown/restart operations.
Add floating window rules for fws-hello and fws-about applications.
2026-07-04 13:42:28 +02:00
nocode 1c74b59459 fix(fws-hello): set window type hint to dialog and prevent resizing
Import Gdk and GLib modules to properly configure window behavior.

Set deterministic WM_CLASS using GLib.set_prgname() so that i3/Hyprland
window rules targeting "fws-hello" floating window behavior work correctly.

Set window type hint to DIALOG and disable resizing to ensure the window
remains floating with its natural size instead of being stretched across
the entire workspace, which would result in unreadable layout.
2026-07-04 13:42:24 +02:00
nocode 1cb48ce4e7 chore(baseline): add file permissions for fws-powermenu and fws-about scripts 2026-07-04 13:42:11 +02:00
nocode 17f9c79983 feat(rofi): add rofi configuration for fws application menu
Add rofi configuration file with FWS styling matching the Hyprland wofi look. Includes dark background, blue borders and selection, icon support, and Catppuccin Mocha color scheme.
2026-07-04 13:15:45 +02:00
nocode 3cdfdcfaeb feat(i3-config): add rofi configuration for i3 desktop environment
Install rofi configuration file (rofi-config.rasi) for i3 desktop to provide an application menu with FWS styling, equivalent to wofi in Hyprland. Configure rofi for both skeleton and existing user home directories with proper ownership settings.
2026-07-04 13:15:33 +02:00
nocode 9e59be79c3 feat(efiboot): add FWS recovery boot entry configuration
Add a new EFI boot loader entry for FWS recovery mode that boots the live system without the installer and launches the recovery assistant console. This enables system repair functionality including GRUB reinstallation, initramfs regeneration, and pacman repair.
2026-07-04 12:57:05 +02:00
nocode 080a77c5e3 feat(releng): add fws-updates-check script for update notifications
Add a new shell script that checks for available package updates using checkupdates from pacman-contrib. The script outputs the number of available updates with an icon for use in waybar/polybar status bars. Silent output when no updates are available allows the bar module to hide.
2026-07-04 12:57:01 +02:00
nocode 7e40a565cc feat(fws-update): add system update utility script
Add fws-update script to provide a one-command system update solution accessible from taskbar, fws-hello menu, or terminal.

The script performs:
- System update via pacman -Syu
- Package cache cleanup (retains 2 latest versions)
- Orphaned package detection and optional removal
- Flatpak updates if available

Requires root privileges and prompts for user confirmation on orphan removal.
2026-07-04 12:56:57 +02:00
nocode 338f6b87ee feat(recovery): add fws-recovery script for system repair from live environment
Add a comprehensive system recovery tool that:
- Detects FWS installations on disks including LVM volumes
- Mounts target root filesystem with /boot and ESP partitions
- Provides interactive menu for common repair operations:
  - GRUB reinstallation (UEFI and BIOS support)
  - Initramfs regeneration via mkinitcpio
  - Pacman database repair and system updates
  - Interactive chroot shell for manual intervention

The script handles automatic LVM activation, filesystem detection via os-release, and proper cleanup on exit.
2026-07-04 12:56:51 +02:00
nocode 4f4afec6b2 feat(releng): add fws-proton-ge script for proton-ge installation
Add a user-friendly bash script that automates downloading and installing
Proton-GE (GloriousEggroll) for Steam. The script fetches the latest release
from GitHub, verifies integrity with SHA512 checksums, and installs it to the
user's Steam compatibility tools directory. Includes error handling and user
guidance for Steam configuration.
2026-07-04 12:56:44 +02:00
nocode 640aa15af8 feat(releng): add fws-hello welcome window script
Add a new GTK3-based welcome window script that displays on first boot after installation. The script provides quick access to system setup tasks including system update, multimedia codecs installation, Proton-GE setup, VR configuration, and keyboard shortcuts (on Hyprland/i3). Users can opt to hide the window on subsequent boots via a checkbox and flag file.
2026-07-04 12:56:39 +02:00
nocode 73f73ff17e feat(releng): add fws-hello desktop autostart entry
Add desktop entry file to automatically launch fws-hello welcome window on first startup. This provides a user-friendly greeting interface when the system boots.
2026-07-04 12:56:33 +02:00
nocode 6c8e7c0f78 feat(syslinux): add fws recovery boot option to syslinux config
Add a new boot menu entry for FWS installation recovery that boots into a guided console assistant without reinstalling. The recovery mode is triggered via the fws.recovery=1 kernel parameter.
2026-07-04 12:56:28 +02:00
nocode 5762f59d95 chore(releng): add new executable file permissions to profiledef
Add permission entries for five new utility scripts:
- fws-hello
- fws-update
- fws-updates-check
- fws-proton-ge
- fws-recovery

All are configured with standard permissions (0:0:755).
2026-07-04 12:56:24 +02:00
nocode affba77349 feat(releng): add firewalld to x86_64 packages 2026-07-04 12:56:17 +02:00
nocode 87977ce8d7 build(releng): add python-gobject, pacman-contrib packages and enable firewalld
- Add python-gobject for fws-hello welcome window (GTK3 comes with Firefox)
- Add pacman-contrib for checkupdates/paccache (update indicator and fws-update)
- Enable firewalld.service by default with public zone (blocks inbound, allows outbound)
- firewalld is already in the base image and can be activated offline
- GUI included in firewall-config package; KDE has additional plasma-firewall
2026-07-04 12:56:13 +02:00
nocode b5f00d8dd2 feat(waybar): add custom updates module to waybar configuration
Add a new custom/updates module to the waybar right-side modules that displays available system updates. The module executes fws-updates-check every 30 minutes (1800 seconds) and allows users to install updates by clicking, which launches a kitty terminal running fws-update. Tooltip text is displayed in French.
2026-07-04 12:56:08 +02:00
nocode 349cc28d7d feat(polybar): add updates module to polybar configuration
Add a new custom script module to check for system updates in the polybar status bar. The module runs fws-updates-check every 30 minutes and allows users to trigger updates with a left click to open the update utility in kitty terminal.
2026-07-04 12:56:03 +02:00
nocode fc1bc218a4 feat(i3-config): add fws-hello welcome window on startup
Add execution of fws-hello with --autostart flag to display a welcome window on first boot only. The window will automatically hide after the initial startup.
2026-07-04 12:55:56 +02:00
nocode d399fc5fa6 feat(hyprland): add fws-hello welcome window on first startup
Add execution of fws-hello with --autostart flag to display a welcome window on first launch. The window will be automatically hidden on subsequent startups.
2026-07-04 12:55:50 +02:00
nocode 4d36e86f51 feat(hardware-setup): add mangohud gaming performance overlay packages
Add mangohud and lib32-mangohud packages to the desktop environment setup for gaming performance monitoring. Mangohud provides an in-game FPS and performance metrics overlay that can be used with Steam games via '%command%' prefix.
2026-07-04 12:55:45 +02:00
nocode a0f269cf90 chore(baseline): add file permissions for new fws utility scripts
Add file permission entries for five new utility scripts in the fws toolkit:
- fws-hello
- fws-update
- fws-updates-check
- fws-proton-ge
- fws-recovery

All scripts are configured with owner:group 0:0 and executable permission 755.
2026-07-04 12:55:38 +02:00
nocode 7831b537d7 feat(baseline): add recovery mode boot option to zprofile
Add support for recovery mode that can be triggered via the fws.recovery=1 kernel parameter. When recovery mode is enabled, the system launches the fws-recovery console assistant directly instead of starting the graphical environment.

This allows users to access repair tools without needing to start X server, improving system recovery capabilities.
2026-07-04 12:55:25 +02:00
nocode 2c5f08330a refactor(fws-keys): make keyboard shortcuts tool universal for hyprland and i3
Rename fws-hypr-keys to fws-keys and extend it to support both Hyprland and i3 desktop environments. The tool now detects the session type and uses appropriate methods:

- Hyprland: queries hyprctl binds for real loaded bindings (wofi dmenu)
- i3: parses ~/.config/i3/config with variable resolution (rofi dmenu)

Update all references in configs and templates. Add VM detection warning in fws-vr-setup to prevent VR attempts in virtual machines where GPU/USB access is unavailable.

Add ttf-liberation font dependency for Steam UI stability on minimal installations and improve error guidance for Steam crashes.
2026-07-04 03:59:09 +02:00