Commit Graph

78 Commits

Author SHA1 Message Date
nocode 0ab90857e5 feat(fws-setup-hardware): add brightnessctl and blueman to base stack
Add brightnessctl for brightness control without root via logind,
consumed by XF86MonBrightness* keys and waybar backlight module.

Add blueman as graphical Bluetooth manager for desktop environments
that don't provide their own (KDE and GNOME have built-in managers).
Blueman provides system tray integration and pairing assistant.

Update comments to clarify the purpose of these new packages.
2026-07-04 00:25:57 +02:00
nocode d6212deaa9 feat(fws-hypr-keys): add optional style support and adjust wofi dimensions
- Import os module to check for style file existence
- Add _STYLE constant pointing to wofi-keys.css stylesheet
- Increase wofi window dimensions from 780x560 to 820x600
- Conditionally apply custom style if the stylesheet exists
- Refactor wofi command construction for better readability
2026-07-04 00:25:45 +02:00
nocode 24370461ea feat(sddm): add fws login theme for kde xfce and hyprland
Introduce a new SDDM theme "fws" designed for FWS with support for KDE, XFCE, and Hyprland desktop environments.

The theme is built using pure QtQuick and QtQuick.Controls (Basic style) with no additional dependencies beyond what SDDM already requires. It includes:

- Main.qml: Custom login screen with clock, date, user/password fields, session selector, and power controls
- metadata.desktop: Theme metadata and configuration
- theme.conf: Default configuration with customizable accent color and gradient colors

The design uses a dark theme with accent colors and supports capslock detection and login error handling.
2026-07-04 00:00:05 +02:00
nocode 5d6d1c6db8 feat(waybar): add waybar style configuration for fws theme
Add CSS stylesheet for Waybar that matches the FWS theme, SDDM appearance, and Hyprland borders. Includes styling for workspaces, clock, custom key help button, and system status modules with Catppuccin blue accent color (#89b4fa).
2026-07-03 23:59:58 +02:00
nocode 23df7656e5 feat(waybar): add waybar configuration for hyprland desktop environment
Add waybar panel configuration with modules for workspaces, window title, clock, volume, network, CPU, and memory monitoring. Configured for top panel layout with French localization support.
2026-07-03 23:59:53 +02:00
nocode a28a64310a feat(releng): add fws-hypr-keys script to display hyprland keyboard shortcuts
Add a new Python utility script that displays actual Hyprland keyboard shortcuts from hyprctl binds output. The script:

- Queries hyprctl binds to get loaded key bindings from the compositor
- Formats keybinds with human-readable modifiers and key labels (French localization)
- Displays descriptions from bindd config entries or falls back to dispatcher actions
- Opens results in wofi dmenu for incremental search and filtering
- Handles special keys like mouse buttons, arrow keys, and common special keys
- Deduplicates repeated bindings (e.g., from resize actions)

No additional dependencies required beyond python3 and wofi (already in FWS + Hyprland packages).
2026-07-03 23:59:49 +02:00
nocode d8e67fe861 refactor(anaconda): clarify payload mechanism and enhance desktop environment configurations
Update interactive-defaults.ks kickstart file with:

- Clarified documentation on LiveOS payload detection and mounting via /run/rootfsbase bind-mount instead of direct liveimg directive
- Added comprehensive comments explaining why liveimg directive is intentionally omitted and how anaconda --liveinst handles payload creation
- Enhanced XFCE and Hyprland package sets with noto-fonts for proper TTF rendering and additional tools (thunar, hyprlock, grim, slurp, wl-clipboard, playerctl)
- Implemented SDDM theme configuration with FWS theme support and accent colors per desktop environment (teal for XFCE, Catppuccin blue for Hyprland, Breeze blue for KDE)
- Added GDM (GNOME) configuration via dconf with welcome banner, clock enhancements, and numlock settings
- Expanded Waybar configuration installation for Hyprland with config and style files
- Added comprehensive documentation for greeter customization and Hyprland VM compatibility
- Included details about FWS recap spoke (standalone GUI summary screen) replacing zenity-based pre-install approach
2026-07-03 23:59:09 +02:00
nocode 68850f0ed2 feat(hyprland): expand hyprland config with keybindings, animations, and window rules
Add comprehensive keybinding descriptions using bindd/binde for keyboard shortcut display, implement Catppuccin Mocha color scheme with blue gradient borders, enable animations with custom bezier curve, configure touchpad settings, add blur/shadow configuration for VM compatibility, implement scratchpad support, add screenshot and multimedia key bindings with PipeWire/playerctl integration, and define window floating rules.

Keybindings now match i3/sway FWS configuration with French descriptions that automatically appear in fws-hypr-keys shortcut viewer. Configuration includes multi-screen support, workspace navigation (1-10), window resizing, and various utility bindings.
2026-07-03 23:59:00 +02:00
nocode 0b0fcd8ce4 feat(releng): add hardware detection and driver setup script
Add fws-setup-hardware script that automatically detects and installs:
- GPU drivers (NVIDIA, AMD, Intel) based on lspci output
- Hypervisor guest tools (VMware, VirtualBox, QEMU, Hyper-V)
- Audio/mic/headset stack (PipeWire), Bluetooth (BlueZ), containers (Podman)
- Optional desktop stack when non-CLI desktop is selected: Steam, Wine, VR support (Monado/OpenXR), and winboat-bin

The script is integrated into the Anaconda kickstart post-installation phase and is non-blocking to prevent installation failures from missing packages or network issues.

Also update profiledef.sh to set correct permissions (755) for the new script.
2026-06-24 23:32:37 +02:00
nocode 99006b9ede feat(hyprland): add hyprland configuration with keyboard layout injection and vm compatibility
Add Hyprland desktop environment support with:

- New hyprland.conf template with keyboard layout placeholders (__KB_LAYOUT__ and __KB_VARIANT__) that get injected during installation
- Hyprland wrapper script (/usr/local/bin/fws-hyprland) that detects virtual machines and forces software rendering to prevent compositor crashes on virtual GPUs (VMware vmwgfx, VirtualBox)
- Automatic configuration deployment to /etc/skel and existing user home directories
- Refactored keyboard layout detection logic (moved to section 3bis) to support both X11/SDDM and Hyprland configurations
- Added locale generation during installation to ensure proper language support

Keyboard layout is now derived from either kickstart configuration or system locale using langtable, providing consistent keyboard behavior across all desktop environments.
2026-06-24 23:06:20 +02:00
nocode ff98a1e186 fix(anaconda): improve desktop environment setup and system configuration
- Fix XFCE display manager: replace lightdm-gtk-greeter with sddm for consistency
- Add SDDM numlock initialization for KDE, XFCE, and Hyprland
- Configure X11 keyboard layout from kickstart or locale via langtable to ensure correct SDDM login keyboard
- Enable wheel group sudo access and add all human users to wheel group
- Apply FWS branding to os-release, lsb-release, and GRUB configuration
- Remove inappropriate live system motd file
- Fix DNS resolution: configure systemd-resolved stub resolver with NetworkManager integration to prevent "Limited Connectivity" on first boot
- Reformat case statement for better readability
2026-06-24 19:02:31 +02:00
nocode 7daca57714 feat(anaconda): add desktop environment selection spoke for FWS
Implement a new Anaconda spoke that allows users to select their preferred desktop environment (CLI, GNOME, KDE Plasma, Hyprland, or XFCE) during installation.

The spoke:
- Displays radio buttons for five desktop choices with CLI as the default
- Persists the selection to /tmp/fws-desktop for the kickstart %post script
- Supports revisiting the spoke and resuming previous selections
- Includes a GTK UI definition file (glade) with translatable labels
- Integrates as a SoftwareCategory spoke in the Anaconda installer

The implementation leverages Anaconda's runtime spoke discovery mechanism via the airootfs overlay, avoiding the need to rebuild the anaconda package.
2026-06-24 17:58:52 +02:00
nocode 0de970239f feat(build): refactor build script with interactive version and variant selection
Replace automatic version reading from VERSION file with interactive prompts for version (major.minor.build) and ISO variant name (e.g., cli, gnome, kde).

Changes:
- Remove automatic VERSION file reading; now serves as default with prompt
- Add interactive prompts for version and variant name with validation
- Simplify ISO naming from FWS-v{major}-{minor}-{build}-{date}-x86_64.iso to fws-{version}-{variant}.iso
- Update hostname from 'archiso' to 'fws'
- Add custom FWS logo for fastfetch with color configuration
- Improve error messages and user feedback

This enables flexible build variants and streamlines the build process.
2026-06-23 11:02:41 +02:00
nocode 7d6bba42b2 feat(anaconda): add hostname field to user spoke and fix keyboard layout by territory
Replace keyboard correction logic in kickstart with anaconda package patches:

- Add "Nom de machine" (hostname) field to the User spoke in anaconda GUI
- user.py writes the hostname value to /tmp/fws-hostname for the kickstart %post
- Simplify kickstart to read from /tmp/fws-hostname instead of live hostname
- Fix keyboard layout selection to use full locale (e.g. fr_CH) instead of just language (fr)
  to correctly derive territory-specific keymaps (ch(fr) for Switzerland, not fr for France)
- Remove outdated fix_keyboard() function from kickstart

Also add --network=host flag to podman run in setup-aur.sh to ensure DNS and internet
connectivity through the host stack instead of the bridge (fixes timeout issues on
certain networks with firewalld/NAT).

Bump anaconda pkgrel from 2 to 4.
2026-06-23 10:48:32 +02:00
nocode 1184ba17d9 fix(releng): correct hostname and keyboard mapping in anaconda post-installation
Fix two bugs in the anaconda post-installation script:

1. Hostname handling: Anaconda writes an empty /etc/hostname to the target system. Now we preserve the hostname set during installation from the live environment, falling back to 'fws' if using default values.

2. Keyboard mapping: Anaconda derives keyboard layout from language only, ignoring territory. For locales with territory variants (e.g., fr_CH for Switzerland), we now apply territory-specific keyboard maps to both console (vconsole.conf) and X11 (xorg.conf.d) using langtable for proper mapping.
2026-06-23 08:40:42 +02:00
nocode 2c9e4e6260 feat(anaconda): improve installation process and post-install handling
- Add kernel copy step in %pre to ensure vmlinuz-linux is available for mkinitcpio
- Refactor xinitrc post-install log detection to use /tmp/fws-post-chroot.log copied by kickstart
- Add success detection based on mkinitcpio and grub-install log markers
- Display success screen and poweroff on successful installation, show debug logs on failure
- Add load_policy and setstatus stub scripts to suppress SELinux-related Anaconda warnings
- Force MBR partition table (--disklabel=msdos) for BIOS boot compatibility
- Create standard mkinitcpio preset to replace archiso-specific configuration
- Automatically inject lvm2 hook when root is on LVM
- Fix GRUB installation to properly extract disk path from lsblk output
- Downgrade version to 0.5.3 (development/testing release)
2026-06-22 15:04:41 +02:00
nocode 9e3cca8efc fix(installer): improve bootloader installation and debug logging
- Add fallback GRUB installation for UEFI systems using --removable flag to ensure boot without NVRAM entries
- Fix BIOS disk detection for LVM root partitions by using lsblk with proper filtering instead of pkname
- Enhance debug logging to include %post chroot phase logs (fws-post.log) which indicate bootloader success
- Automatically mount and retrieve installation logs from the installed disk to verify bootloader installation
- Add detailed comments explaining UEFI/BIOS fallback strategies and LVM-aware disk detection

These changes ensure the system can boot even when NVRAM entries are missing or forgotten by firmware, and provide better visibility into bootloader installation success during the debug phase.
2026-06-19 15:44:18 +02:00
nocode fd3c2c998c chore(releng): add disk cleanup commands to anaconda kickstart
Add zerombr and clearpart commands to ensure clean disk state before installation.

This prevents issues when reinstalling on previously partitioned disks by:
- Reinitializing invalid partition tables (zerombr)
- Removing all partitions from all disks (clearpart --all)
- Writing a fresh disk label (--initlabel)

This makes reinstallation reliable even on disks with previous installations,
while allowing users to override defaults via the GUI if needed.
2026-06-18 18:41:38 +02:00
nocode 43c1053bd7 docs: add licensing and compliance documentation
Add comprehensive FOSS compliance documentation including:
- COPYRIGHT.md: copyright holders and code ownership
- LICENSING.md: GPL-3.0-or-later policy and source offer
- NOTICE: attribution requirements for permissive licenses
- THIRD-PARTY-LICENSES.md: third-party software inventory
- TRADEMARKS.md: trademark notices and non-affiliation
- os-release hook and files: identify FWS as separate from Arch Linux

These documents establish legal compliance baseline for GPL/AGPL/Apache/MIT/BSD obligations before public distribution.
2026-06-17 15:18:39 +02:00
nocode de9647a00d chore: migrate from calamares to anaconda installer
Remove Calamares compilation and configuration, replace with Anaconda installer setup.

Changes:
- Remove Calamares-related entries from .gitignore
- Update README with migration status from Calamares to Anaconda
- Rename setup-calamares.sh references to setup-aur.sh
- Remove Calamares packages from package lists
- Add anaconda and liveimg payload packages
- Add Anaconda kickstart configuration (interactive-defaults.ks)
- Update boot sequence documentation: remove Calamares desktop selection, simplify to Openbox live environment
- Remove Calamares-specific troubleshooting entries
- Clean up .xinitrc and .zlogin to remove Calamares launcher
- Update build scripts to reference local repo generically instead of Calamares-specific
2026-06-17 10:33:28 +02:00
nocode 05ae9c36c3 refactor(Anaconda)! : Changing the installator to Anaconda
'cause Calamares is a way to difficult for what we want and we want to try something else
2026-06-12 23:31:35 +02:00
nocode 98d47d497c fix(Calamares): Installater will ask the desktop env before the calamares install
- The installer is still W.I.P
2026-06-04 23:30:33 +02:00
nocode a7a5055ee8 fix(Multi-Desktop Hyperland): Fix some bugs of hyperland 2026-05-28 22:42:57 +02:00
nocode 241bd5c219 fix(Installer ─ Multi-Desktop): Fix Multi Desktop 2026-05-28 18:00:25 +02:00
nocode d1198b9d04 chore(Installer-MultiDesktop): Save to be able to work somewhere else 2026-05-28 00:41:11 +02:00
nocode f6ee07429b feat(Installer): Add Multi Desktop environnement in the installer to allow the user to choose wich desktop env 2026-05-27 19:22:42 +02:00
BlackAngelTV a9d4b9ac91 feat: multi environnemnt desktop
[180][WIP]
2026-05-27 16:02:05 +02:00
nocode 48b5afa4cd Migration of FWS from Github 2026-04-02 15:32:15 +02:00