├── po ├── fr │ ├── LC_MESSAGES │ │ └── architect.mo │ └── fr.po └── architect.pot ├── src ├── system │ ├── usergroups.sh │ ├── drivers │ │ ├── intel.sh │ │ ├── amd.sh │ │ ├── bluetooth.sh │ │ ├── gpu.sh │ │ ├── gamepad.sh │ │ ├── vm.sh │ │ ├── printer.sh │ │ └── nvidia.sh │ ├── internet.sh │ ├── audio.sh │ ├── packages.sh │ ├── grub-btrfs.sh │ ├── bootloader.sh │ ├── config │ │ ├── pacman.sh │ │ └── aur.sh │ ├── firewall.sh │ ├── apparmor.sh │ ├── kernel.sh │ └── shell.sh ├── de │ ├── xfce4.sh │ ├── detect.sh │ ├── kde.sh │ └── gnome.sh ├── end.sh ├── init.sh ├── cmd.sh └── software │ └── install.sh ├── contribuer-traduction-fr.md ├── architect.sh └── README.md /po/fr/LC_MESSAGES/architect.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Cardiacman13/Architect/HEAD/po/fr/LC_MESSAGES/architect.mo -------------------------------------------------------------------------------- /src/system/usergroups.sh: -------------------------------------------------------------------------------- 1 | # Load shared functions 2 | source src/cmd.sh 3 | 4 | # Add the current user to common system groups for hardware and peripheral access 5 | function add_groups_to_user() { 6 | local -r groups_lst="sys,network,wheel,audio,lp,storage,video,users,rfkill" 7 | exec_log "sudo usermod -aG ${groups_lst} $(whoami)" "$(eval_gettext "Adding user to groups: ${groups_lst}")" 8 | } 9 | -------------------------------------------------------------------------------- /src/system/drivers/intel.sh: -------------------------------------------------------------------------------- 1 | source src/cmd.sh 2 | 3 | function intel_drivers() { 4 | local -r inlst=" 5 | mesa 6 | lib32-mesa 7 | vulkan-intel 8 | lib32-vulkan-intel 9 | vulkan-icd-loader 10 | lib32-vulkan-icd-loader 11 | intel-media-driver 12 | intel-gmmlib 13 | onevpl-intel-gpu 14 | vulkan-mesa-layers 15 | libva-mesa-driver 16 | lib32-libva-mesa-driver 17 | mesa-vdpau 18 | lib32-mesa-vdpau 19 | " 20 | 21 | install_lst "${inlst}" 22 | } 23 | -------------------------------------------------------------------------------- /src/system/drivers/amd.sh: -------------------------------------------------------------------------------- 1 | source src/cmd.sh 2 | 3 | function amd_drivers() { 4 | local inlst=" 5 | mesa 6 | lib32-mesa 7 | vulkan-radeon 8 | lib32-vulkan-radeon 9 | vulkan-icd-loader 10 | lib32-vulkan-icd-loader 11 | libva-mesa-driver 12 | lib32-libva-mesa-driver 13 | vulkan-mesa-layers 14 | mesa-vdpau 15 | lib32-mesa-vdpau 16 | " 17 | 18 | if ask_question "$(eval_gettext "Would you like to install ROCM (\${RED}say No if unsure\${RESET})")"; then 19 | inlst="${inlst} rocm-opencl-runtime rocm-hip-runtime" 20 | fi 21 | 22 | install_lst "${inlst}" 23 | } 24 | -------------------------------------------------------------------------------- /src/system/internet.sh: -------------------------------------------------------------------------------- 1 | # Load shared helper functions 2 | source src/cmd.sh 3 | 4 | # Function to check if the system has an active internet connection 5 | function check_internet() { 6 | local -r tool='curl' # Tool used to perform the connection check 7 | local -r tool_opts='-s --connect-timeout 8' # Silent mode, with an 8-second timeout 8 | 9 | # Attempt to connect to archlinux.org; if it fails, show an error and return 1 10 | if ! ${tool} ${tool_opts} https://archlinux.org/ >/dev/null 2>&1; then 11 | eval_gettext "\${RED}Error: No Internet connection\${RESET}"; echo 12 | return 1 13 | fi 14 | 15 | # Connection succeeded 16 | return 0 17 | } 18 | -------------------------------------------------------------------------------- /src/system/audio.sh: -------------------------------------------------------------------------------- 1 | # Load shared functions 2 | source src/cmd.sh 3 | 4 | # Configure the system sound stack using PipeWire and ALSA 5 | function sound_server() { 6 | # Packages to install for modern audio stack 7 | local -r inlst=" 8 | pipewire 9 | wireplumber 10 | pipewire-alsa 11 | pipewire-jack 12 | pipewire-pulse 13 | alsa-utils 14 | alsa-plugins 15 | alsa-firmware 16 | alsa-ucm-conf 17 | sof-firmware 18 | rtkit 19 | " 20 | 21 | # Remove conflicting or outdated audio components 22 | local -r unlst="jack2" 23 | 24 | uninstall_lst "${unlst}" "$(eval_gettext "Cleaning old sound server dependencies")" 25 | install_lst "${inlst}" 26 | } 27 | -------------------------------------------------------------------------------- /src/system/drivers/bluetooth.sh: -------------------------------------------------------------------------------- 1 | # Load shared functions 2 | source src/cmd.sh 3 | 4 | ################################################################################ 5 | # Bluetooth-related installations 6 | ################################################################################ 7 | function bluetooth() { 8 | if ask_question "$(eval_gettext "Do you want to use Bluetooth?")"; then 9 | local -r inlst=" 10 | bluez 11 | bluez-plugins 12 | bluez-utils 13 | bluez-hid2hci 14 | bluez-libs 15 | " 16 | 17 | install_lst "${inlst}" 18 | 19 | # Enable the Bluetooth service 20 | exec_log "sudo systemctl enable bluetooth" "$(eval_gettext "Enabling bluetooth service")" 21 | fi 22 | } 23 | -------------------------------------------------------------------------------- /src/system/drivers/gpu.sh: -------------------------------------------------------------------------------- 1 | source src/cmd.sh 2 | source src/system/drivers/nvidia.sh 3 | source src/system/drivers/amd.sh 4 | source src/system/drivers/intel.sh 5 | source src/system/drivers/vm.sh 6 | 7 | function video_drivers() { 8 | local -r valid_gpus="INTEL AMD NVIDIA VM" 9 | 10 | read -rp "$(eval_gettext "What is your graphics card type ?") (${valid_gpus}) : " choice 11 | choice="${choice^^}" 12 | while [[ ! ${valid_gpus} =~ (^|[[:space:]])"${choice}"($|[[:space:]]) ]]; do 13 | read -rp "$(eval_gettext "What is your graphics card type ?") (${valid_gpus}) : " choice 14 | choice="${choice^^}" 15 | done 16 | 17 | eval_gettext "\${GREEN}You chose \${choice}\${RESET}"; echo 18 | case "${choice}" in 19 | "NVIDIA") nvidia_drivers ;; 20 | "AMD") amd_drivers ;; 21 | "INTEL") intel_drivers ;; 22 | "VM") vm_drivers ;; 23 | *) echo "Invalid graphics card type : ${choice}" ;; 24 | esac 25 | } -------------------------------------------------------------------------------- /src/system/drivers/gamepad.sh: -------------------------------------------------------------------------------- 1 | # Load shared functions 2 | source src/cmd.sh 3 | 4 | ################################################################################ 5 | # Gamepad-related installations 6 | ################################################################################ 7 | function gamepad() { 8 | if ask_question "$(eval_gettext "Would you want to install xpadneo? (Can improve Xbox gamepad support. \${RED}Say No if unsure.\${RESET})")"; then 9 | install_one "xpadneo-dkms-git" 10 | fi 11 | 12 | if ask_question "$(eval_gettext "Would you want to install Xone? (Can improve Xbox gamepad support with a USB wireless dongle. \${RED}Say No if unsure.\${RESET})")"; then 13 | local -r inlst=" 14 | xone-dkms-git 15 | xone-dongle-firmware 16 | " 17 | install_lst "${inlst}" 18 | fi 19 | 20 | if ask_question "$(eval_gettext "Do you want to use PS5 controllers?")"; then 21 | install_one "dualsensectl-git" 22 | fi 23 | } 24 | -------------------------------------------------------------------------------- /src/system/packages.sh: -------------------------------------------------------------------------------- 1 | # Load shared functions 2 | source src/cmd.sh 3 | 4 | 5 | function usefull_package() { 6 | local inlst=" 7 | joystickwake 8 | gstreamer 9 | gst-plugins-bad 10 | gst-plugins-base 11 | gst-plugins-ugly 12 | gst-plugin-pipewire 13 | gstreamer-vaapi 14 | gst-plugins-good 15 | gst-libav 16 | gstreamer-vaapi 17 | libva-mesa-driver 18 | lib32-libva-mesa-driver 19 | mesa-vdpau 20 | lib32-mesa-vdpau 21 | xdg-utils 22 | rebuild-detector 23 | fastfetch 24 | power-profiles-daemon 25 | ttf-dejavu 26 | ttf-liberation 27 | ttf-meslo-nerd 28 | noto-fonts-emoji 29 | adobe-source-code-pro-fonts 30 | otf-font-awesome 31 | ttf-droid 32 | ntfs-3g 33 | fuse2 34 | fuse2fs 35 | fuse3 36 | exfatprogs 37 | bash-completion 38 | ffmpegthumbs 39 | man-db 40 | man-pages 41 | " 42 | 43 | if [[ ${BTRFS} == true ]]; then 44 | inlst+=" btrfs-progs btrfs-assistant btrfs-du btrfsmaintenance" 45 | fi 46 | 47 | install_lst "${inlst}" 48 | } 49 | -------------------------------------------------------------------------------- /src/system/grub-btrfs.sh: -------------------------------------------------------------------------------- 1 | # Load shared helper functions 2 | source src/cmd.sh 3 | 4 | # Configure GRUB-Btrfs integration with Timeshift 5 | function grub-btrfs() { 6 | # Ask the user if they want to set up Timeshift and GRUB-Btrfs 7 | if ask_question "$(eval_gettext "Do you want to install and setup grub-btrfs and timeshift \${RED}say No if unsure\${RESET} /!\ ?")"; then 8 | 9 | # Install the required packages: Timeshift, Grub-Btrfs, and Timeshift autosnap 10 | install_lst "timeshift grub-btrfs timeshift-autosnap" 11 | 12 | # Enable cronie, needed for scheduled tasks like Timeshift autosnap 13 | exec_log "sudo systemctl enable cronie.service" "$(eval_gettext "Enable cronie")" 14 | 15 | # Enable the grub-btrfsd daemon, which generates GRUB entries for Timeshift snapshots 16 | exec_log "sudo systemctl enable grub-btrfsd" "$(eval_gettext "Enable grub-btrfsd")" 17 | 18 | # Modify the grub-btrfsd systemd unit to use Timeshift's snapshot directory automatically 19 | exec_log "sudo sed -i 's|ExecStart=/usr/bin/grub-btrfsd --syslog /.snapshots|ExecStart=/usr/bin/grub-btrfsd --syslog --timeshift-auto|' /etc/systemd/system/multi-user.target.wants/grub-btrfsd.service" "$(eval_gettext "setup grub-btrfsd for timeshift")" 20 | fi 21 | } 22 | -------------------------------------------------------------------------------- /src/de/xfce4.sh: -------------------------------------------------------------------------------- 1 | source src/cmd.sh 2 | 3 | function install_xfce() { 4 | local -r inlst=" 5 | xfce4 6 | xfce4-goodies 7 | pavucontrol 8 | gvfs 9 | xarchiver 10 | xfce4-battery-plugin 11 | xfce4-datetime-plugin 12 | xfce4-mount-plugin 13 | xfce4-netload-plugin 14 | xfce4-notifyd 15 | xfce4-pulseaudio-plugin 16 | xfce4-screensaver 17 | xfce4-screenshooter 18 | xfce4-taskmanager 19 | xfce4-wavelan-plugin 20 | xfce4-weather-plugin 21 | xfce4-whiskermenu-plugin 22 | xfce4-xkb-plugin 23 | xdg-desktop-portal-xapp 24 | xdg-user-dirs-gtk 25 | network-manager-applet 26 | xfce4-notifyd 27 | gnome-keyring 28 | mugshot 29 | xdg-user-dirs 30 | blueman 31 | file-roller 32 | galculator 33 | gvfs-afc 34 | gvfs-gphoto2 35 | gvfs-mtp 36 | gvfs-nfs 37 | gvfs-smb 38 | lightdm 39 | lightdm-slick-greeter 40 | network-manager-applet 41 | parole 42 | ristretto 43 | thunar-archive-plugin 44 | thunar-media-tags-plugin 45 | xed 46 | " 47 | 48 | install_lst "${inlst}" 49 | exec_log "xdg-user-dirs-update" "$(eval_gettext "Updating user directories")" 50 | } 51 | -------------------------------------------------------------------------------- /src/de/detect.sh: -------------------------------------------------------------------------------- 1 | # Source the installation functions for known desktop environments 2 | source src/de/gnome.sh 3 | source src/de/kde.sh 4 | source src/de/xfce4.sh 5 | 6 | # Automatically detect and install the appropriate desktop environment configuration 7 | function detect_de() { 8 | local detected="" 9 | 10 | # Get the current desktop environment from standard environment variables 11 | # Fallback to DESKTOP_SESSION if XDG_CURRENT_DESKTOP is not set 12 | local desktop_env="${XDG_CURRENT_DESKTOP,,}" 13 | desktop_env="${desktop_env:-${DESKTOP_SESSION,,}}" 14 | 15 | # Match known desktop environments and run the corresponding setup 16 | case "$desktop_env" in 17 | *gnome*) 18 | detected="GNOME" 19 | install_gnome 20 | ;; 21 | *plasma*|*kde*) 22 | detected="KDE" 23 | install_kde 24 | ;; 25 | *xfce*) 26 | detected="XFCE" 27 | install_xfce 28 | ;; 29 | *) 30 | detected="OTHER" 31 | echo "$(eval_gettext "No supported DE detected (GNOME, KDE, XFCE). Skipping DE configuration.")" 32 | return 33 | ;; 34 | esac 35 | 36 | # Output the detected environment for logging/debugging 37 | echo "$(eval_gettext "Detected desktop environment:") $detected" 38 | } 39 | -------------------------------------------------------------------------------- /src/de/kde.sh: -------------------------------------------------------------------------------- 1 | # Source the script from src/cmd.sh 2 | source src/cmd.sh 3 | 4 | # Function to install KDE applications 5 | function install_kde() { 6 | # Define a list of KDE applications to install 7 | local -r inlst=" 8 | konsole 9 | kwrite 10 | dolphin 11 | ark 12 | xdg-desktop-portal-kde 13 | okular 14 | print-manager 15 | gwenview 16 | spectacle 17 | partitionmanager 18 | ffmpegthumbs 19 | qt6-multimedia 20 | qt6-multimedia-gstreamer 21 | qt6-multimedia-ffmpeg 22 | qt6-wayland 23 | kdeplasma-addons 24 | kcalc 25 | plasma-systemmonitor 26 | kwalletmanager 27 | " 28 | 29 | # Call the install_lst function to install the listed applications 30 | install_lst "${inlst}" 31 | 32 | # Check if the SDDM configuration file exists 33 | if [ ! -f /etc/sddm.conf ]; then 34 | # Create the SDDM configuration file if it doesn't exist 35 | exec_log "sudo touch /etc/sddm.conf" "$(eval_gettext "Creating /etc/sddm.conf")" 36 | fi 37 | 38 | # Set the Breeze theme for SDDM 39 | exec_log "echo -e '[Theme]\nCurrent=breeze' | sudo tee -a /etc/sddm.conf" "$(eval_gettext "Setting Breeze theme for SDDM")" 40 | 41 | # Enable Numlock for SDDM 42 | exec_log "echo -e '[General]\nNumlock=on' | sudo tee -a /etc/sddm.conf" "$(eval_gettext "Setting Numlock=on for SDDM")" 43 | } 44 | -------------------------------------------------------------------------------- /src/system/drivers/vm.sh: -------------------------------------------------------------------------------- 1 | # Load shared helper functions 2 | source src/cmd.sh 3 | 4 | # Function to detect the VM type and install appropriate drivers/tools 5 | function vm_drivers() { 6 | # Install virt-what to detect the virtualization environment 7 | install_one "virt-what" 8 | 9 | # Use virt-what to get the VM type 10 | local -r vm="$(sudo virt-what)" 11 | 12 | # Install generic software rendering and Vulkan support for VMs 13 | local -r inlst_all=" 14 | vulkan-swrast 15 | lib32-vulkan-swrast 16 | vulkan-icd-loader 17 | lib32-vulkan-icd-loader 18 | " 19 | install_lst "${inlst_all}" 20 | 21 | # If running under VirtualBox, install VirtualBox guest utilities 22 | if [[ ${vm} =~ (^|[[:space:]])virtualbox($|[[:space:]]) ]]; then 23 | local -r inlst=" 24 | virtualbox-guest-utils 25 | " 26 | install_lst "${inlst}" 27 | 28 | # Enable VirtualBox guest service 29 | exec_log "sudo systemctl enable vboxservice" "$(eval_gettext "activation of vboxservice")" 30 | 31 | # Start VirtualBox client tools for resolution/sync 32 | exec_log "sudo VBoxClient-all" "$(eval_gettext "activation of VBoxClient-all")" 33 | 34 | # Otherwise, assume QEMU or similar and install its agents 35 | else 36 | local -r inlst=" 37 | spice-vdagent 38 | qemu-guest-agent 39 | " 40 | install_lst "${inlst}" 41 | fi 42 | 43 | # Remove virt-what after use to keep the system clean 44 | uninstall_one "virt-what" 45 | } 46 | -------------------------------------------------------------------------------- /src/de/gnome.sh: -------------------------------------------------------------------------------- 1 | # Source the script from src/cmd.sh 2 | source src/cmd.sh 3 | 4 | # Function to install GNOME applications 5 | function install_gnome() { 6 | # Define a list of GNOME applications to install 7 | local -r inlst=" 8 | gnome 9 | gnome-tweaks 10 | gnome-calculator 11 | gnome-console 12 | gnome-control-center 13 | gnome-disk-utility 14 | gnome-keyring 15 | gnome-nettool 16 | gnome-power-manager 17 | gnome-shell 18 | gnome-text-editor 19 | gnome-themes-extra 20 | gnome-browser-connector 21 | adwaita-icon-theme 22 | loupe 23 | papers 24 | gdm 25 | gvfs 26 | gvfs-afc 27 | gvfs-gphoto2 28 | gvfs-mtp 29 | gvfs-nfs 30 | gvfs-smb 31 | nautilus 32 | nautilus-sendto 33 | sushi 34 | showtime 35 | xdg-user-dirs-gtk 36 | adw-gtk-theme 37 | snapshot 38 | qt6-wayland 39 | " 40 | 41 | # Call the install_lst function to install the listed applications 42 | install_lst "${inlst}" 43 | 44 | # Set the GTK theme to adw-gtk3 45 | exec_log "gsettings set org.gnome.desktop.interface gtk-theme adw-gtk3" "$(eval_gettext "Setting gtk theme to adw-gtk3")" 46 | 47 | # Enable Numlock on startup 48 | exec_log "gsettings set org.gnome.desktop.peripherals.keyboard numlock-state true" "$(eval_gettext "Enabling numlock on startup")" 49 | 50 | # Disable GDM rules to unlock Wayland 51 | exec_log "sudo ln -s /dev/null /etc/udev/rules.d/61-gdm.rules" "$(eval_gettext "Disable GDM rules to unlock Wayland")" 52 | } 53 | -------------------------------------------------------------------------------- /src/system/bootloader.sh: -------------------------------------------------------------------------------- 1 | # Configure GRUB bootloader and setup automatic config regeneration with pacman hook 2 | 3 | # Load shared functions 4 | source src/cmd.sh 5 | source src/system/grub-btrfs.sh 6 | 7 | function setup_system_loaders() { 8 | log_msg "$(eval_gettext "Checking if GRUB is installed")" 9 | 10 | # Only continue if the system uses GRUB 11 | if [[ $BOOT_LOADER != "grub" ]]; then 12 | return 13 | fi 14 | 15 | # Ensure pacman hook directory exists 16 | exec_log "sudo mkdir -p /etc/pacman.d/hooks" "$(eval_gettext "Creating /etc/pacman.d/hooks")" 17 | 18 | # Create GRUB regeneration hook if it doesn't exist 19 | if [ ! -f /etc/pacman.d/hooks/grub.hook ]; then 20 | exec_log "sudo tee /etc/pacman.d/hooks/grub.hook > /dev/null << 'EOF' 21 | [Trigger] 22 | Type = File 23 | Operation = Install 24 | Operation = Upgrade 25 | Operation = Remove 26 | Target = usr/lib/modules/*/vmlinuz 27 | 28 | [Action] 29 | Description = Updating grub configuration ... 30 | When = PostTransaction 31 | Exec = /usr/bin/grub-mkconfig -o /boot/grub/grub.cfg 32 | EOF 33 | " "$(eval_gettext "Setting up GRUB hook")" 34 | fi 35 | 36 | # Enable OS prober for dual-boot detection 37 | install_one "os-prober" 38 | exec_log "sudo sed -i 's/#\s*GRUB_DISABLE_OS_PROBER=false/GRUB_DISABLE_OS_PROBER=false/' '/etc/default/grub'" "$(eval_gettext "Enabling os-prober")" 39 | exec_log "sudo os-prober" "$(eval_gettext "Running os-prober")" 40 | exec_log "sudo grub-mkconfig -o /boot/grub/grub.cfg" "$(eval_gettext "Updating GRUB")" 41 | 42 | # Install grub-btrfs if btrfs is used and package is not present 43 | if ! pacman -Q grub-btrfs &> /dev/null && [[ ${BTRFS} == true ]]; then 44 | grub-btrfs 45 | fi 46 | } 47 | -------------------------------------------------------------------------------- /src/end.sh: -------------------------------------------------------------------------------- 1 | # Function called at the end of the main script 2 | function endscript() { 3 | # Get the current time (in seconds since epoch) 4 | local -r end_time="$(date +%s)" 5 | 6 | # Calculate the total duration of the script (end - start) 7 | local -r duration="$((${end_time} - ${1}))" 8 | 9 | # Display execution time in the terminal 10 | eval_gettext "Done in \${GREEN}\${duration}\${RESET} seconds."; echo 11 | 12 | # Also write the duration to the log file 13 | echo -e "Done in ${duration} seconds." >>"${LOG_FILE}" 14 | 15 | # Ask the user if they want to upload the log file to a pastebin (0x0.st) 16 | if ask_question "$(eval_gettext "Do you want to upload the log file to a pastebin?")"; then 17 | eval_gettext "Uploading log file to pastebin..."; echo 18 | 19 | # Upload the log and capture the URL 20 | local -r url="$(curl -s -F 'file=@'"${LOG_FILE}" https://0x0.st)" 21 | 22 | # Display the pastebin URL 23 | eval_gettext "Log file uploaded to \${url}"; echo 24 | fi 25 | 26 | # If NOREBOOT is true, skip the reboot and just exit the script 27 | if [[ "${NOREBOOT}" == "true" ]]; then 28 | eval_gettext "\${GREEN}Script completed successfully.\${RESET}"; echo 29 | exit 0 30 | fi 31 | 32 | # Otherwise, ask the user to confirm system reboot 33 | read -rp "$(eval_gettext "\${GREEN}Script completed successfully, the system must restart\${RESET}: Press \${GREEN}Enter\${RESET} to restart or \${RED}Ctrl+C\${RESET} to cancel.")" 34 | 35 | # 5-second countdown before rebooting 36 | for i in {5..1}; do 37 | eval_gettext "\${GREEN}Restarting in \${i} seconds...\${RESET}"; echo -ne "\r" 38 | sleep 1 39 | done 40 | 41 | # Reboot the system 42 | reboot 43 | } 44 | -------------------------------------------------------------------------------- /contribuer-traduction-fr.md: -------------------------------------------------------------------------------- 1 | # 🛠️ Guide de mise à jour des traductions (fichier `.po`) pour Architect 2 | 3 | ## 📁 Pré-requis 4 | - Te placer **à la racine du projet `Architect`** 5 | - Disposer des outils `gettext`, `msgmerge`, `msgfmt` installés (via `pacman -S gettext` sur Arch si besoin) 6 | 7 | --- 8 | 9 | ## 🔍 1. Extraire les nouvelles chaînes à traduire 10 | 11 | Exécute les commandes suivantes : 12 | 13 | ```bash 14 | echo '' > messages.po # Crée un fichier vide requis par xgettext 15 | find . -type f -iname "*.sh" | xgettext -j -f - # Remplit messages.po avec les chaînes des scripts 16 | ``` 17 | 18 | 👉 Cela va **créer ou mettre à jour `messages.po`** avec les nouvelles chaînes extraites des fichiers `.sh`. 19 | 20 | --- 21 | 22 | ## 🧩 2. Fusionner les nouvelles chaînes avec l'existant 23 | 24 | ```bash 25 | msgmerge -N po/fr/fr.po messages.po > fr.po 26 | ``` 27 | 28 | 🔁 Cela **fusionne les nouvelles chaînes dans le fichier de traduction `fr.po`**, en conservant celles déjà traduites. 29 | 30 | --- 31 | 32 | ## 💾 3. Remplacer l'ancien fichier `.po` par le nouveau 33 | 34 | ```bash 35 | mv fr.po po/fr/fr.po 36 | ``` 37 | 38 | ✅ Tu as maintenant un fichier `.po` mis à jour : `po/fr/fr.po` 39 | 40 | --- 41 | 42 | ## 🌍 4. Traduire 43 | 44 | Ouvre le fichier : 45 | 46 | ``` 47 | po/fr/fr.po 48 | ``` 49 | 50 | ➡️ Cherche les nouvelles chaînes **non traduites** (elles commencent par `msgstr ""`) et ajoute leur traduction. 51 | 52 | --- 53 | 54 | ## ⚙️ 5. Générer le fichier compilé `.mo` 55 | 56 | ```bash 57 | msgfmt -o po/fr/LC_MESSAGES/architect.mo po/fr/fr.po 58 | ``` 59 | 60 | 💡 Ce fichier `.mo` est celui utilisé réellement par ton programme pour afficher les traductions. 61 | 62 | --- 63 | 64 | ## 🎉 Et voilà ! 65 | 66 | Tu viens de terminer la mise à jour des traductions pour Architect. 67 | Répète ce processus à chaque fois que tu ajoutes ou modifies des chaînes dans tes scripts ! 68 | -------------------------------------------------------------------------------- /src/init.sh: -------------------------------------------------------------------------------- 1 | # Display the script header and warning message before execution 2 | function header() { 3 | clear 4 | 5 | # Display stylized ASCII art with color codes 6 | cat <<-EOF 7 | ----------------------------------------------------------------------------------------------------------- 8 | 9 | ${PURPLE}%%%%%%%%%%${RESET} ${GREEN}*********${RESET} 10 | ${PURPLE}%%%${RESET} ${GREEN}******${RESET} 11 | ${PURPLE}%%%${RESET} ${GREEN}***${RESET} `eval_gettext "Script Architect for Arch Linux"` 12 | ${PURPLE}%%%${RESET} ${GREEN}***${RESET} 13 | ${PURPLE}%%%${RESET} ${GREEN}***${RESET} GitHub : https://github.com/Cardiacman13/Architect/ 14 | ${PURPLE}%%%${RESET} ${GREEN}***${RESET} 15 | ${PURPLE}%%%${RESET} ${GREEN}***${RESET} 16 | ${PURPLE}%%%%%%${RESET} ${GREEN}***${RESET} 17 | ${PURPLE}%%%%%%%%${RESET} ${GREEN}***********${RESET} 18 | 19 | ----------------------------------------------------------------------------------------------------------- 20 | EOF 21 | 22 | sleep 1 23 | 24 | # Display warning and user prompt 25 | eval_gettext "\${RED}This script will make changes to your system.\${RESET}"; echo 26 | eval_gettext "Some steps may take longer, depending on your Internet connection and CPU."; echo 27 | eval_gettext "Press \${GREEN}Enter\${RESET} to continue, or \${RED}Ctrl+C\${RESET} to cancel."; echo 28 | 29 | # Wait for user confirmation 30 | read -rp "" choice 31 | 32 | # If the user types something instead of pressing Enter, exit the script 33 | [[ -n $choice ]] && exit 0 34 | } 35 | 36 | # Initialize the log file for the script 37 | function init_log() { 38 | # Remove the existing log file if it already exists 39 | if [[ -f "${LOG_FILE}" ]]; then 40 | rm -f "${LOG_FILE}" 41 | fi 42 | 43 | # Create a new empty log file 44 | touch "${LOG_FILE}" 45 | 46 | # Log the current Git commit hash and log file path for reference 47 | echo -e "Commit hash: $(git rev-parse HEAD)" >>"${LOG_FILE}" 48 | echo -e "Log file: ${LOG_FILE}\n" >>"${LOG_FILE}" 49 | } 50 | -------------------------------------------------------------------------------- /src/system/config/pacman.sh: -------------------------------------------------------------------------------- 1 | # Load shared functions 2 | source src/cmd.sh 3 | 4 | # Configure pacman and makepkg with user-friendly and performance settings 5 | function config_pacman() { 6 | # Enable color output in pacman 7 | exec_log "sudo sed -i 's/^#Color$/Color/' '/etc/pacman.conf'" "$(eval_gettext "Enabling color in pacman")" 8 | 9 | # Enable verbose package lists 10 | exec_log "sudo sed -i 's/^#VerbosePkgLists$/VerbosePkgLists/' '/etc/pacman.conf'" "$(eval_gettext "Enabling verbose package lists in pacman")" 11 | 12 | # Enable the multilib repository 13 | exec_log "sudo sed -i '/^#\[multilib\]/,/^#Include = \/etc\/pacman.d\/mirrorlist/ s/^#//' '/etc/pacman.conf'" "$(eval_gettext "Enabling multilib repository")" 14 | 15 | # Set MAKEFLAGS to use all available CPU cores for compilation 16 | exec_log "sudo sed -i 's/#MAKEFLAGS=\"-j2\"/MAKEFLAGS=\"-j\$(nproc)\"/' /etc/makepkg.conf" "$(eval_gettext "Enabling multithread compilation")" 17 | 18 | # Full system upgrade 19 | exec_log "sudo pacman -Syyu --noconfirm" "$(eval_gettext "Updating full system \${RED}(might be long)\${RESET}")" 20 | 21 | # Install pacman-contrib for tools like paccache 22 | exec_log "sudo pacman -S pacman-contrib --noconfirm" "$(eval_gettext "Installing pacman-contrib")" 23 | 24 | # Enable automatic cleaning of old package versions 25 | exec_log "sudo systemctl enable paccache.timer" "$(eval_gettext "Enabling paccache timer")" 26 | 27 | # Remove existing update-mirrors script if it exists 28 | if [[ -f /usr/bin/update-mirrors ]]; then 29 | exec_log "sudo rm /usr/bin/update-mirrors" "$(eval_gettext "Removing existing update-mirrors script")" 30 | fi 31 | 32 | # Create /usr/bin/update-mirrors script using proper EOF formatting 33 | exec_log "sudo tee /usr/bin/update-mirrors > /dev/null << 'EOF' 34 | #!/bin/bash 35 | tmpfile=\$(mktemp) 36 | echo \"Using temporary file: \$tmpfile\" 37 | rate-mirrors --save=\$tmpfile arch --max-delay=43200 && \\ 38 | sudo cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist-backup && \\ 39 | sudo mv \$tmpfile /etc/pacman.d/mirrorlist && \\ 40 | sudo pacman -Syyu 41 | EOF" "$(eval_gettext "Creating update-mirrors script")" 42 | 43 | # Make it executable 44 | exec_log "sudo chmod +x /usr/bin/update-mirrors" "$(eval_gettext "Making update-mirrors script executable")" 45 | } 46 | 47 | # Optimize and update mirrorlist using rate-mirrors wrapper 48 | function mirrorlist() { 49 | 50 | # Ensure rate-mirrors is installed 51 | install_one "rate-mirrors" 52 | 53 | # Use the new /usr/bin/update-mirrors binary 54 | exec_log "update-mirrors" "$(eval_gettext "Running update-mirrors")" 55 | } 56 | -------------------------------------------------------------------------------- /src/system/drivers/printer.sh: -------------------------------------------------------------------------------- 1 | # Load shared functions 2 | source src/cmd.sh 3 | 4 | ################################################################################ 5 | # Printer-related installations (CUPS, drivers, etc.) 6 | ################################################################################ 7 | function printer() { 8 | if ask_question "$(eval_gettext "Do you want to use a printer?")"; then 9 | local inlst=" 10 | ghostscript 11 | gsfonts 12 | cups 13 | cups-filters 14 | cups-pdf 15 | system-config-printer 16 | avahi 17 | foomatic-db-engine 18 | foomatic-db 19 | foomatic-db-ppds 20 | foomatic-db-nonfree 21 | foomatic-db-nonfree-ppds 22 | gutenprint 23 | foomatic-db-gutenprint-ppds 24 | " 25 | 26 | if ask_question "$(eval_gettext "Do you want to use an EPSON printer?")"; then 27 | inlst+=" 28 | epson-inkjet-printer-escpr 29 | epson-inkjet-printer-escpr2 30 | " 31 | fi 32 | 33 | if ask_question "$(eval_gettext "Do you want to use a HP printer?")"; then 34 | inlst+=" 35 | hplip 36 | python-pyqt5 37 | " 38 | fi 39 | 40 | # Install all the listed printer-related packages 41 | install_lst "${inlst}" 42 | 43 | # Enable necessary services 44 | exec_log "sudo systemctl enable avahi-daemon" "$(eval_gettext "Enabling avahi-daemon service")" 45 | exec_log "sudo systemctl enable cups" "$(eval_gettext "Enabling cups service")" 46 | 47 | # If firewalld is installed, open the ports/services needed for CUPS 48 | if command -v firewall-cmd >/dev/null 2>&1; then 49 | # Open the IPP service (port 631) for network printing 50 | exec_log "sudo firewall-cmd --permanent --add-service=ipp" "Opening IPP service for CUPS" 51 | # Enable local printer discovery via mDNS 52 | exec_log "sudo firewall-cmd --permanent --add-service=mdns" "Opening mDNS for printer discovery" 53 | 54 | exec_log "sudo firewall-cmd --reload" "Reloading firewalld configuration" 55 | fi 56 | 57 | # If ufw is installed, open the same ports/services for CUPS 58 | if command -v ufw >/dev/null 2>&1; then 59 | # The IPP service uses TCP port 631 60 | # UFW doesn't have a named 'ipp' service by default, so we directly open port 631 61 | exec_log "sudo ufw allow 631/tcp" "Opening TCP port 631 for IPP" 62 | 63 | # mDNS typically uses UDP port 5353 64 | exec_log "sudo ufw allow 5353/udp" "Opening UDP port 5353 for mDNS" 65 | 66 | exec_log "sudo ufw reload" "Reloading ufw configuration" 67 | fi 68 | fi 69 | } 70 | -------------------------------------------------------------------------------- /src/system/firewall.sh: -------------------------------------------------------------------------------- 1 | # Load shared functions 2 | source src/cmd.sh 3 | 4 | # The firewall function prompts the user to install a firewall (Firewalld or UFW), 5 | # then lets the user choose which one to install. 6 | function firewall() { 7 | # Ask the user if they want to install a firewall 8 | if ask_question "$(eval_gettext "Would you like to install a firewall? /!\\ WARNING: This script can install and enable either Firewalld or UFW. The default configuration may block local network devices such as printers or block some software functions.")"; then 9 | 10 | # Print an introduction message 11 | echo "Please choose which firewall to install by typing the number of your choice." 12 | 13 | # Customize the prompt shown by the 'select' command 14 | PS3="Enter your choice (1 for Firewalld, 2 for UFW): " 15 | 16 | # Present a simple interactive menu 17 | select firewall_choice in "Firewalld" "UFW"; do 18 | case $firewall_choice in 19 | 20 | # If the user selects "Firewalld" 21 | "Firewalld") 22 | # Install the necessary packages: firewalld, python-pyqt5, and python-capng 23 | install_lst "firewalld python-pyqt5 python-capng" 24 | 25 | # Enable and start the firewalld service immediately 26 | sudo systemctl enable --now firewalld.service &> /dev/null 27 | 28 | # Remove SSH and DHCPv6-Client services from the default firewall zone (optional) 29 | sudo firewall-cmd --remove-service="ssh" --permanent &> /dev/null 30 | sudo firewall-cmd --remove-service="dhcpv6-client" --permanent &> /dev/null 31 | 32 | # Inform the user that Firewalld is set up 33 | echo "Firewalld has been installed and enabled." 34 | break 35 | ;; 36 | 37 | # If the user selects "UFW" 38 | "UFW") 39 | # Install the UFW package 40 | install_lst "ufw" 41 | 42 | # Enable and start the ufw service 43 | sudo systemctl enable --now ufw.service &> /dev/null 44 | 45 | # Activate ufw (by default, it may block all incoming connections except SSH) 46 | sudo ufw enable 47 | 48 | # Inform the user that UFW is set up 49 | echo "UFW has been installed and enabled." 50 | break 51 | ;; 52 | 53 | # Any invalid choice leads to a prompt to select again 54 | *) 55 | echo "Invalid choice, please select '1' for Firewalld or '2' for UFW." 56 | ;; 57 | esac 58 | done 59 | fi 60 | } 61 | -------------------------------------------------------------------------------- /src/system/drivers/nvidia.sh: -------------------------------------------------------------------------------- 1 | source src/cmd.sh 2 | 3 | # Ensure early loading of NVIDIA modules in initramfs 4 | function nvidia_earlyloading () { 5 | if ! grep -q 'nvidia_drm' /etc/mkinitcpio.conf; then 6 | exec_log "sudo sed -i 's/^MODULES=(/MODULES=(nvidia nvidia_modeset nvidia_uvm nvidia_drm /' /etc/mkinitcpio.conf" \ 7 | "$(eval_gettext "Adding NVIDIA modules to mkinitcpio.conf")" 8 | else 9 | log "$(eval_gettext "NVIDIA modules already present in mkinitcpio.conf")" 10 | fi 11 | } 12 | 13 | 14 | # Optional installation of Intel GPU drivers for hybrid laptops 15 | function nvidia_intel() { 16 | if ask_question "$(eval_gettext "Do you have an Intel/Nvidia Laptop ?")"; then 17 | local -r inlst=" 18 | intel-media-driver 19 | intel-gmmlib 20 | onevpl-intel-gpu 21 | " 22 | install_lst "${inlst}" 23 | fi 24 | } 25 | 26 | # Main function to uninstall legacy NVIDIA drivers and install the correct set 27 | function nvidia_drivers() { 28 | local -r unlst=" 29 | nvidia-dkms 30 | nvidia 31 | nvidia-lts 32 | dxvk-nvapi-mingw 33 | lib32-nvidia-dev-utils-tkg 34 | lib32-opencl-nvidia-dev-tkg 35 | nvidia-dev-dkms-tkg 36 | nvidia-dev-egl-wayland-tkg 37 | nvidia-dev-settings-tkg 38 | nvidia-dev-utils-tkg 39 | opencl-nvidia-dev-tkg 40 | " 41 | 42 | uninstall_lst "${unlst}" "$(eval_gettext "Clean old NVIDIA driver dependencies")" 43 | 44 | # Install required NVIDIA packages 45 | local -r inlst=" 46 | nvidia-open-dkms 47 | nvidia-utils 48 | lib32-nvidia-utils 49 | nvidia-settings 50 | vulkan-icd-loader 51 | lib32-vulkan-icd-loader 52 | egl-wayland 53 | opencl-nvidia 54 | lib32-opencl-nvidia 55 | libvdpau-va-gl 56 | libvdpau 57 | libva-nvidia-driver 58 | " 59 | install_lst "${inlst}" 60 | 61 | # call early loading NVIDIA fonction 62 | nvidia_earlyloading 63 | 64 | # Optional Intel GPU driver installation for hybrid laptops 65 | nvidia_intel 66 | 67 | # Optional CUDA installation 68 | if ask_question "$(eval_gettext "Do you want to install CUDA (${RED}say No if unsure${RESET}) ?")"; then 69 | install_one "cuda" 70 | fi 71 | 72 | # Enable NVIDIA suspend/resume services 73 | exec_log "sudo systemctl enable nvidia-suspend.service nvidia-hibernate.service nvidia-resume.service" \ 74 | "$(eval_gettext "Enabling NVIDIA suspend/resume services")" 75 | 76 | # Conditionally enable nvidia-powerd if on laptop and GPU is not Turing 77 | local device_type 78 | device_type="$(cat /sys/devices/virtual/dmi/id/chassis_type)" 79 | if ((device_type >= 8 && device_type <= 11)); then 80 | # Check for Turing GPUs (Device name starts with "TU") 81 | if ! lspci -d "10de:*:030x" -vm | grep -q 'Device:\s*TU'; then 82 | exec_log "sudo systemctl enable nvidia-powerd.service" \ 83 | "$(eval_gettext "Enabling NVIDIA PowerD for supported laptop GPU")" 84 | else 85 | log "$(eval_gettext "NVIDIA PowerD is not supported on Turing GPUs")" 86 | fi 87 | else 88 | log "$(eval_gettext "Not a laptop chassis; skipping NVIDIA PowerD")" 89 | fi 90 | } 91 | -------------------------------------------------------------------------------- /src/system/apparmor.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | source src/cmd.sh 4 | 5 | function apparmor() { 6 | if ask_question "$(eval_gettext "Do you want to install apparmor security module /!\\ Install and activate apparmor? This is a layer with MAC model. High security, but ${RED}can cause access problems${RESET}")"; then 7 | 8 | if [[ "$BOOT_LOADER" == "grub" ]]; then 9 | if ! grep -q "lsm=landlock,lockdown,yama,integrity,apparmor,bpf" '/etc/default/grub'; then 10 | exec_log "sudo sed -i 's/^GRUB_CMDLINE_LINUX_DEFAULT=\"/&lsm=landlock,lockdown,yama,integrity,apparmor,bpf /' '/etc/default/grub'" \ 11 | "$(eval_gettext "Adding AppArmor parameters to GRUB configuration")" 12 | fi 13 | BOOTLOADER_FOUND=true 14 | 15 | elif [[ "$BOOT_LOADER" == "systemd-boot" ]]; then 16 | if ! grep -q "lsm=landlock,lockdown,yama,integrity,apparmor,bpf" '/boot/loader/entries/*_linux.conf'; then 17 | exec_log "sudo sed -i 's/^options=\"/&lsm=landlock,lockdown,yama,integrity,apparmor,bpf /' '/boot/loader/entries/*_linux.conf'" \ 18 | "$(eval_gettext "Adding AppArmor parameters to systemd-boot configuration")" 19 | fi 20 | BOOTLOADER_FOUND=true 21 | 22 | elif [[ "$BOOT_LOADER" == "0" ]]; then 23 | exec_log "echo \"$(eval_gettext "No valid bootloader detected, skipping ...")\"" \ 24 | "$(eval_gettext "No valid bootloader detected")" 25 | BOOTLOADER_FOUND=false 26 | fi 27 | 28 | if [[ "$BOOT_LOADER" == "grub" && "$BOOTLOADER_FOUND" == true ]]; then 29 | if [ -d /sys/firmware/efi ]; then 30 | exec_log "sudo grub-mkconfig -o /boot/efi/EFI/arch/grub.cfg" \ 31 | "$(eval_gettext "Updating GRUB configuration for EFI systems")" 32 | else 33 | exec_log "sudo grub-mkconfig -o /boot/grub/grub.cfg" \ 34 | "$(eval_gettext "Updating GRUB configuration for BIOS systems")" 35 | fi 36 | exec_log "install_lst \"apparmor apparmor.d-git\"" \ 37 | "$(eval_gettext "Installing AppArmor packages")" 38 | 39 | exec_log "sudo sed -i -e '\$a write-cache' -e 'Optimize=compress-fast' /etc/apparmor/parser.conf" \ 40 | "$(eval_gettext 'Enabling caching for AppArmor profiles')" 41 | 42 | exec_log "sudo systemctl enable --now apparmor.service &> /dev/null" \ 43 | "$(eval_gettext "Enabling and starting AppArmor service")" 44 | 45 | # Force user to read the important message 46 | while true; do 47 | echo "$(eval_gettext "Done! Profiles are in complain mode, to enforce the security reboot and use: ${RED}sudo aa-enforce /etc/apparmor.d/*${RESET}")" 48 | echo "$(eval_gettext "Type 'yes' to confirm you have read the above message:")" 49 | read -r confirmation 50 | if [[ "$confirmation" == "yes" || "$confirmation" == "oui" ]]; then 51 | break 52 | else 53 | echo "$(eval_gettext "Please read the message carefully and type 'yes' to confirm.")" 54 | fi 55 | done 56 | else 57 | exec_log "echo \"$(eval_gettext "Skipping AppArmor installation due to invalid bootloader.")\"" \ 58 | "$(eval_gettext "Skipping AppArmor installation")" 59 | fi 60 | fi 61 | } 62 | -------------------------------------------------------------------------------- /src/system/config/aur.sh: -------------------------------------------------------------------------------- 1 | # Load shared functions 2 | source src/cmd.sh 3 | 4 | function install_aur() { 5 | # Ensure Git is installed (required to clone AUR helper repositories) 6 | exec_log "sudo pacman -S --noconfirm --needed git" "$(eval_gettext "Installing git")" 7 | 8 | # Define AUR helpers and their respective Git URLs 9 | local -r aur_helpers=("yay" "paru") 10 | local -r aur_repos=("https://aur.archlinux.org/yay-bin.git" "https://aur.archlinux.org/paru-bin.git") 11 | local -r aur_dirs=("yay-bin" "paru-bin") 12 | 13 | local choice="" 14 | local index=-1 15 | 16 | # Prompt user to choose an AUR helper 17 | while [[ $choice != "yay" && $choice != "paru" ]]; do 18 | read -rp "$(eval_gettext "Which AUR helper do you want to install? (yay/paru): ")" choice 19 | choice="${choice,,}" # Convert to lowercase 20 | done 21 | 22 | eval_gettext "\${GREEN}You chose \${choice}\${RESET}"; echo 23 | 24 | # Determine index and export AUR helper name 25 | case "$choice" in 26 | yay) index=0 ;; 27 | paru) index=1 ;; 28 | esac 29 | 30 | export AUR="${aur_helpers[$index]}" 31 | 32 | # Install the chosen AUR helper if not already installed 33 | if ! pacman -Qi "$AUR" &>/dev/null; then 34 | local dir="${aur_dirs[$index]}" 35 | exec_log "git clone ${aur_repos[$index]}" "$(eval_gettext "Cloning $dir")" 36 | 37 | # Temporarily allow pacman to run without password 38 | exec_log "echo \"$USER ALL=(ALL) NOPASSWD: /usr/bin/pacman\" | sudo tee /etc/sudoers.d/99-pacman-nopasswd >/dev/null" \ 39 | "$(eval_gettext "Allowing pacman without password temporarily")" 40 | 41 | pushd "$dir" >/dev/null || return 1 42 | exec_log "makepkg -si --noconfirm" "$(eval_gettext "Installing $AUR")" 43 | popd >/dev/null || return 1 44 | 45 | # Clean up 46 | exec_log "sudo rm -f /etc/sudoers.d/99-pacman-nopasswd" "$(eval_gettext "Removing temporary sudoers rule")" 47 | exec_log "rm -rf $dir" "$(eval_gettext "Deleting directory $dir")" 48 | fi 49 | 50 | # Post-install configuration 51 | case "$AUR" in 52 | yay) 53 | exec_log "yay -Y --gendb" "$(eval_gettext "Generating DB for $AUR")" 54 | exec_log "yay -Y --devel --save" "$(eval_gettext "Auto-updating Git-based AUR packages")" 55 | exec_log "sed -i 's/\"sudoloop\": false,/\"sudoloop\": true,/' ~/.config/yay/config.json" \ 56 | "$(eval_gettext "Enabling SudoLoop option for yay")" 57 | ;; 58 | paru) 59 | exec_log "paru --gendb" "$(eval_gettext "Generating DB for $AUR and auto-updating Git-based AUR packages")" 60 | local paru_conf="/etc/paru.conf" 61 | exec_log "sudo sed -i 's/#BottomUp/BottomUp/' $paru_conf" \ 62 | "$(eval_gettext "Enabling BottomUp option for paru")" 63 | exec_log "sudo sed -i 's/#SudoLoop/SudoLoop/' $paru_conf" \ 64 | "$(eval_gettext "Enabling SudoLoop option for paru")" 65 | exec_log "sudo sed -i 's/#CombinedUpgrade/CombinedUpgrade/' $paru_conf" \ 66 | "$(eval_gettext "Enabling CombinedUpgrade option for paru")" 67 | exec_log "sudo sed -i 's/#UpgradeMenu/UpgradeMenu/' $paru_conf" \ 68 | "$(eval_gettext "Enabling UpgradeMenu option for paru")" 69 | exec_log "sudo sed -i 's/#NewsOnUpgrade/NewsOnUpgrade/' $paru_conf" \ 70 | "$(eval_gettext "Enabling NewsOnUpgrade option for paru")" 71 | 72 | # Only add SkipReview if it's not already present 73 | exec_log "if ! grep -qxF \"SkipReview\" \"$paru_conf\"; then sudo sh -c 'echo \"SkipReview\" >> \"$paru_conf\"'; fi" \ 74 | "$(eval_gettext "Enabling SkipReview option for paru")" 75 | ;; 76 | esac 77 | } 78 | -------------------------------------------------------------------------------- /src/system/kernel.sh: -------------------------------------------------------------------------------- 1 | # Load shared functions 2 | source src/cmd.sh 3 | 4 | # Install the correct kernel headers for all installed kernels 5 | function install_headers() { 6 | local kernel_headers=() 7 | 8 | for kernel in /boot/vmlinuz-*; do 9 | [ -e "${kernel}" ] || continue 10 | kernel_headers+=("$(basename "${kernel}" | sed -e 's/vmlinuz-//')-headers") 11 | done 12 | 13 | install_lst "${kernel_headers[*]}" 14 | } 15 | 16 | # Apply sysctl performance and memory tuning settings 17 | function configure_sysctl_tweaks() { 18 | local sysctl_file="/etc/sysctl.d/99-architect-kernel.conf" 19 | 20 | # Remove existing sysctl file if it exists 21 | if [ -f "$sysctl_file" ]; then 22 | exec_log "sudo rm $sysctl_file" "$(eval_gettext "Removing existing sysctl performance tweaks")" 23 | fi 24 | 25 | # Create new sysctl config with system performance optimizations 26 | exec_log "sudo tee $sysctl_file > /dev/null << 'EOF' 27 | # The sysctl swappiness parameter determines the kernel's preference for pushing anonymous pages or page cache to disk in memory-starved situations. 28 | # A low value causes the kernel to prefer freeing up open files (page cache), a high value causes the kernel to try to use swap space, 29 | # and a value of 100 means IO cost is assumed to be equal. 30 | vm.swappiness = 100 31 | 32 | # The value controls the tendency of the kernel to reclaim the memory which is used for caching of directory and inode objects (VFS cache). 33 | # Lowering it from the default value of 100 makes the kernel less inclined to reclaim VFS cache (do not set it to 0, this may produce out-of-memory conditions) 34 | vm.vfs_cache_pressure = 50 35 | 36 | # Contains, as bytes, the number of pages at which a process which is 37 | # generating disk writes will itself start writing out dirty data. 38 | vm.dirty_bytes = 268435456 39 | 40 | # page-cluster controls the number of pages up to which consecutive pages are read in from swap in a single attempt. 41 | # This is the swap counterpart to page cache readahead. The mentioned consecutivity is not in terms of virtual/physical addresses, 42 | # but consecutive on swap space - that means they were swapped out together. (Default is 3) 43 | # increase this value to 1 or 2 if you are using physical swap (1 if ssd, 2 if hdd) 44 | vm.page-cluster = 0 45 | 46 | # Contains, as bytes, the number of pages at which the background kernel 47 | # flusher threads will start writing out dirty data. 48 | vm.dirty_background_bytes = 67108864 49 | 50 | # The kernel flusher threads will periodically wake up and write old data out to disk. This 51 | # tunable expresses the interval between those wakeups, in 100'ths of a second (Default is 500). 52 | vm.dirty_writeback_centisecs = 1500 53 | 54 | # This action will speed up your boot and shutdown, because one less module is loaded. Additionally disabling watchdog timers increases performance and lowers power consumption 55 | # Disable NMI watchdog 56 | kernel.nmi_watchdog = 0 57 | 58 | # Enable the sysctl setting kernel.unprivileged_userns_clone to allow normal users to run unprivileged containers. 59 | kernel.unprivileged_userns_clone = 1 60 | 61 | # To hide any kernel messages from the console 62 | kernel.printk = 3 3 3 3 63 | 64 | # Restricting access to kernel pointers in the proc filesystem 65 | kernel.kptr_restrict = 2 66 | 67 | # Disable Kexec, which allows replacing the current running kernel. 68 | kernel.kexec_load_disabled = 1 69 | 70 | # Increase netdev receive queue 71 | # May help prevent losing packets 72 | net.core.netdev_max_backlog = 4096 73 | 74 | # Set size of file handles and inode cache 75 | fs.file-max = 2097152 76 | 77 | # Disable Intel split-lock 78 | kernel.split_lock_mitigate = 0 79 | EOF 80 | " "$(eval_gettext "Applying sysctl memory and kernel performance tweaks")" 81 | 82 | # Reload sysctl settings 83 | exec_log "sudo sysctl --system" "$(eval_gettext "Reloading sysctl parameters")" 84 | } 85 | -------------------------------------------------------------------------------- /src/cmd.sh: -------------------------------------------------------------------------------- 1 | # Utility logging and command execution functions for the Architect installer 2 | 3 | # Append a timestamped log entry to the logfile 4 | function log() { 5 | local -r comment="$1" 6 | 7 | echo "[$(date "+%Y-%m-%d %H:%M:%S")] ${comment}" >>"${LOG_FILE}" 8 | # Clean escape characters, color codes, unicode, etc. 9 | sed -i -E "s/\x1B\[[0-9;]*[JKmsu]|\x1B\(B|\\u[0-9]{0,4}|\\n//g" ${LOG_FILE} 10 | } 11 | 12 | # Echo the message and write it to the log file 13 | function log_msg() { 14 | local -r comment="$1" 15 | 16 | echo "${comment}" 17 | log "${comment}" 18 | } 19 | 20 | # Execute a shell command (with optional verbose and log mode) 21 | function exec() { 22 | local -r command="$1" 23 | 24 | if [[ ${VERBOSE} == true ]]; then 25 | # Display output and log 26 | eval "${command}" 2>&1 | tee -a "${LOG_FILE}" 27 | else 28 | # Run in background and show spinner dots 29 | eval "${command}" >>"${LOG_FILE}" 2>&1 & 30 | job_pid=$! 31 | progress_dots 32 | wait -n 33 | exit_status "${comment}" 34 | fi 35 | } 36 | 37 | # Execute a command with a user-visible comment 38 | function exec_log() { 39 | local -r command="$1" 40 | local -r comment="$2" 41 | 42 | log_msg "${comment}" 43 | exec "${command}" 44 | } 45 | 46 | # Install a single package via AUR helper 47 | function install_one() { 48 | local -r warning=" 49 | cuda 50 | nvidia-dkms 51 | " 52 | local -r package=$1 53 | local -r type=$2 54 | 55 | # Skip install if already installed 56 | if pacman -Qi ${package} &> /dev/null; then 57 | log_msg "$(eval_gettext "\${GREEN}[I]\${RESET} Package \${package} is already installed.")" 58 | return 59 | fi 60 | 61 | # Mark packages that may take longer to compile 62 | local warning_msg="" 63 | if [[ ${warning} =~ ${package} ]]; then 64 | warning_msg="$(eval_gettext " \${RED}(might be long)\${RESET}")" 65 | fi 66 | 67 | # Install via configured AUR helper 68 | exec_log "${AUR} -S --noconfirm --needed ${package}" "${GREEN}[+] ${RESET}${package}${warning_msg}" 69 | } 70 | 71 | # Uninstall a package if it is present 72 | function uninstall_one() { 73 | local -r package=$1 74 | if pacman -Q ${package} &> /dev/null; then 75 | exec_log "sudo pacman -Rdd --noconfirm ${package}" "${RED}[-]${RESET} ${package}" 76 | else 77 | log_msg "$(eval_gettext "\${GREEN}[U]\${RESET} Package \${package} is not installed.")" 78 | fi 79 | } 80 | 81 | # Install a space-separated list of packages 82 | function install_lst() { 83 | local -r lst=$1 84 | local -r type=$2 85 | local -r lst_split=(${lst// / }) 86 | 87 | for package in ${lst_split[@]}; do 88 | install_one "${package}" "${type}" 89 | done 90 | } 91 | 92 | # Uninstall a space-separated list of packages 93 | function uninstall_lst() { 94 | local -r lst=$1 95 | local -r lst_split=(${lst// / }) 96 | 97 | for package in ${lst_split[@]}; do 98 | uninstall_one "${package}" 99 | done 100 | } 101 | 102 | # Ask a yes/no question, return 0 for yes, 1 for no 103 | function ask_question() { 104 | yes="$(eval_gettext "y")" 105 | no="$(eval_gettext "n")" 106 | read -rp "$1 ($yes/${no^^}) : " choice 107 | 108 | if [ "${choice,,}" == "$yes" ]; then 109 | return 0 110 | else 111 | return 1 112 | fi 113 | } 114 | 115 | # Show animated progress dots while waiting on background command 116 | function progress_dots() { 117 | local dots="....." 118 | 119 | while kill -0 $job_pid 2> /dev/null; do 120 | printf "%b [ ]%b\n" "\033[1A${comment}" "\033[6D${BOLD}${GREEN}${dots}${RESET}" 121 | sleep 0.5 122 | dots+="." 123 | if [[ ${dots} == "......" ]]; then 124 | dots="" 125 | fi 126 | done 127 | } 128 | 129 | # Display exit status of the last command with a visual checkmark or cross 130 | function exit_status() { 131 | local exit_status=$? 132 | local -r comment="$1" 133 | 134 | echo "[INFO]: Exit status: ${exit_status}" >>"${LOG_FILE}" 135 | if [[ ${exit_status} -ne 0 ]]; then 136 | printf "%b\n" "\033[1A\033[2K${comment} ${RED}\u2718${RESET}" 137 | log_msg "$(eval_gettext "\${RED}Error: installation failed\${RESET}")" 138 | else 139 | printf "%b\n" "\033[1A\033[2K${comment} ${GREEN}\u2714${RESET}" 140 | fi 141 | } 142 | -------------------------------------------------------------------------------- /src/system/shell.sh: -------------------------------------------------------------------------------- 1 | # Load shared utility functions 2 | source src/cmd.sh 3 | 4 | # Function to configure the default shell and install helper "binaries" instead of aliases 5 | function shell_config() { 6 | # 1. Detect AUR helper and prepare command mappings 7 | local aur_helper="${AUR}" # expected to be 'yay' or 'paru' 8 | 9 | # Declare an associative array mapping command names to their implementations 10 | declare -A cmd_map=( 11 | [fix-key]="sudo rm /var/lib/pacman/sync/* && \ 12 | sudo rm -rf /etc/pacman.d/gnupg/* && \ 13 | sudo pacman-key --init && \ 14 | sudo pacman-key --populate && \ 15 | sudo pacman -Sy --noconfirm archlinux-keyring && \ 16 | sudo pacman --noconfirm -Su" 17 | [update-arch]="${aur_helper} -Syu --noconfirm" 18 | [update-grub]="sudo grub-mkconfig -o /boot/grub/grub.cfg" 19 | [install-all-pkg]="sudo pacman -S \$(pacman -Qnq) --overwrite '*'" 20 | ) 21 | 22 | # Add the clean-arch command based on the chosen AUR helper 23 | if [[ "${aur_helper}" == "yay" ]]; then 24 | cmd_map[clean-arch]="yay -Sc --noconfirm && yay -Yc --noconfirm" 25 | elif [[ "${aur_helper}" == "paru" ]]; then 26 | cmd_map[clean-arch]="paru -Sc --noconfirm && paru -c --noconfirm" 27 | fi 28 | 29 | # 2. Create or recreate executable scripts in /usr/bin for each command 30 | for name in "${!cmd_map[@]}"; do 31 | local cmd="${cmd_map[$name]}" 32 | 33 | # If the binary already exists, remove it first 34 | if [[ -f /usr/bin/${name} ]]; then 35 | exec_log "sudo rm /usr/bin/${name}" "$(eval_gettext "Removing existing /usr/bin/${name}")" 36 | fi 37 | 38 | # Use tee with an EOF block to install the script 39 | exec_log "sudo tee /usr/bin/${name} > /dev/null << 'EOF' 40 | #!/bin/bash 41 | # Auto-generated by shell_config(): ${name} 42 | ${cmd} 43 | EOF" "$(eval_gettext "Creating /usr/bin/${name}")" 44 | 45 | # Make the script executable 46 | exec_log "sudo chmod +x /usr/bin/${name}" "$(eval_gettext "Making /usr/bin/${name} executable")" 47 | done 48 | 49 | # 3. Prompt the user to select their default shell (bash, zsh, or fish) 50 | local choice="" 51 | while [[ "${choice}" != "bash" && "${choice}" != "zsh" && "${choice}" != "fish" ]]; do 52 | read -rp "$(eval_gettext "What is your default shell? (bash/zsh/fish): ")" choice 53 | choice="${choice,,}" # convert to lowercase 54 | done 55 | 56 | eval_gettext "${GREEN}You chose ${choice}${RESET}"; echo 57 | 58 | case "${choice}" in 59 | bash) 60 | # Ensure ~/.bashrc exists 61 | touch "${HOME}/.bashrc" 62 | ;; 63 | zsh) 64 | # Install zsh and completions 65 | install_one "zsh" 66 | install_one "zsh-completions" 67 | 68 | # Change default shell to zsh if not already 69 | local current_shell 70 | current_shell=$(getent passwd "$USER" | cut -d: -f7) 71 | while [[ "${current_shell}" != "/usr/bin/zsh" ]]; do 72 | eval_gettext "Switching default shell to zsh..."; echo 73 | chsh -s "/usr/bin/zsh" 74 | current_shell=$(getent passwd "$USER" | cut -d: -f7) 75 | done 76 | 77 | # Optionally install oh-my-zsh 78 | if ask_question "$(eval_gettext "Do you want to install oh-my-zsh?")"; then 79 | eval_gettext "Installing oh-my-zsh..."; echo 80 | git clone https://github.com/ohmyzsh/ohmyzsh.git "${HOME}/.oh-my-zsh" 81 | cp "${HOME}/.oh-my-zsh/templates/zshrc.zsh-template" "${HOME}/.zshrc" 82 | fi 83 | ;; 84 | fish) 85 | # Install fish shell 86 | install_one "fish" 87 | 88 | # Change default shell to fish if not already 89 | local current_shell 90 | current_shell=$(getent passwd "$USER" | cut -d: -f7) 91 | while [[ "${current_shell}" != "/usr/bin/fish" ]]; do 92 | eval_gettext "Switching default shell to fish..."; echo 93 | chsh -s "/usr/bin/fish" 94 | current_shell=$(getent passwd "$USER" | cut -d: -f7) 95 | done 96 | 97 | # Update fish completions and clear default greeting 98 | fish -c 'fish_update_completions' 99 | fish -c 'set -U fish_greeting' 100 | 101 | # Ensure fish config directory and file exist 102 | mkdir -p "${HOME}/.config/fish" 103 | touch "${HOME}/.config/fish/config.fish" 104 | ;; 105 | esac 106 | 107 | eval_gettext "Shell configuration complete!" 108 | } 109 | -------------------------------------------------------------------------------- /architect.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # Load gettext for translations 4 | . gettext.sh 5 | 6 | # Get the script's base directory 7 | SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) 8 | 9 | # Set gettext domains for translation 10 | export TEXTDOMAIN="architect" 11 | export TEXTDOMAINDIR="$SCRIPT_DIR/po" 12 | 13 | # Set up colors for terminal output 14 | export RESET=$(tput sgr0) 15 | export RED=$(tput setaf 1) 16 | export GREEN=$(tput setaf 2) 17 | export YELLOW=$(tput setaf 3) 18 | export BLUE=$(tput setaf 4) 19 | export PURPLE=$(tput setaf 5) 20 | 21 | # Display usage information 22 | function usage() { 23 | eval_gettext "Usage : ./architect.sh [OPTION]"; echo 24 | eval_gettext "Options :"; echo 25 | eval_gettext " -h --help : Display this help."; echo 26 | eval_gettext " -v --verbose : Verbose mode."; echo 27 | eval_gettext " --no-reboot : Do not reboot the system at the end of the script."; echo 28 | } 29 | 30 | # Parse command-line arguments 31 | VALID_ARGS=$(getopt -o hv --long help,verbose,no-reboot -- "$@") 32 | if [[ $? -ne 0 ]]; then 33 | exit 1 34 | fi 35 | 36 | # Process parsed arguments 37 | eval set -- "$VALID_ARGS" 38 | while :; do 39 | case "$1" in 40 | -h | --help) 41 | usage 42 | exit 1 43 | ;; 44 | -v | --verbose) 45 | export VERBOSE=true 46 | shift 47 | ;; 48 | --no-reboot) 49 | export NOREBOOT=true 50 | shift 51 | ;; 52 | --) 53 | shift 54 | break 55 | ;; 56 | esac 57 | done 58 | 59 | # Set defaults if variables are not defined 60 | export VERBOSE=${VERBOSE:-false} 61 | export NOREBOOT=${NOREBOOT:-false} 62 | 63 | # Ensure the script is not run as root 64 | if [[ $(whoami) == 'root' ]]; then 65 | echo; eval_gettext "\${RED}Do not run this script as root, use a user with sudo rights\${RESET}"; echo 66 | exit 1 67 | fi 68 | 69 | # Prompt for sudo and test privileges 70 | if sudo -v; then 71 | echo; eval_gettext "\${GREEN}Root privileges granted\${RESET}"; echo 72 | else 73 | echo; eval_gettext "\${RED}Root privileges denied\${RESET}"; echo 74 | exit 1 75 | fi 76 | 77 | # Set log file path 78 | export LOG_FILE="$SCRIPT_DIR/logfile_$(date "+%Y%m%d-%H%M%S").log" 79 | 80 | # Detect the boot loader 81 | if [[ -d "/boot/loader/entries" ]]; then 82 | export BOOT_LOADER="systemd-boot" 83 | else 84 | export BOOT_LOADER="grub" 85 | fi 86 | 87 | # Detect Btrfs usage 88 | if lsblk -o FSTYPE | grep -q btrfs; then 89 | export BTRFS=true 90 | else 91 | export BTRFS=false 92 | fi 93 | 94 | # Source all modules 95 | source src/init.sh 96 | source src/end.sh 97 | source src/de/detect.sh 98 | source src/software/install.sh 99 | source src/system/internet.sh 100 | source src/system/config/aur.sh 101 | source src/system/config/pacman.sh 102 | source src/system/drivers/bluetooth.sh 103 | source src/system/drivers/printer.sh 104 | source src/system/drivers/gamepad.sh 105 | source src/system/drivers/gpu.sh 106 | source src/system/kernel.sh 107 | source src/system/packages.sh 108 | source src/system/shell.sh 109 | source src/system/firewall.sh 110 | source src/system/apparmor.sh 111 | source src/system/usergroups.sh 112 | source src/system/audio.sh 113 | source src/system/bootloader.sh 114 | 115 | # Display a big step with a visual separator 116 | function display_step() { 117 | local -r message="$1" 118 | clear 119 | cat <<-EOF 120 | ${BLUE}----------------------------------------------------------------------------------------------------------- 121 | 122 | ${message} 123 | 124 | -----------------------------------------------------------------------------------------------------------${RESET} 125 | EOF 126 | } 127 | 128 | # Check if the OS is Arch Linux (not a derivative) 129 | function check_os() { 130 | if [[ $(grep '^ID=' /etc/os-release) != "ID=arch" ]]; then 131 | echo "${RED}Error: This script is only compatible with Arch Linux and not its derivatives.${RESET}" 132 | exit 1 133 | fi 134 | } 135 | 136 | # Run a small step with a title and a function 137 | function little_step() { 138 | local -r function=$1 139 | local -r message=$2 140 | 141 | echo -e "\n${YELLOW}${message}${RESET}" 142 | ${function} 143 | } 144 | 145 | # Main installation logic 146 | function main() { 147 | check_os 148 | check_internet || exit 1 149 | 150 | local -r start_time="$(date +%s)" 151 | 152 | # Initialization 153 | display_step "$(eval_gettext "Initialization")" 154 | init_log 155 | header 156 | 157 | # System configuration 158 | display_step "$(eval_gettext "System preparation")" 159 | sleep 1 160 | little_step config_pacman "$(eval_gettext "Pacman configuration")" 161 | little_step install_aur "$(eval_gettext "AUR helper installation")" 162 | little_step mirrorlist "$(eval_gettext "Mirrorlist configuration")" 163 | little_step install_headers "$(eval_gettext "Kernel headers installation")" 164 | little_step configure_sysctl_tweaks "$(eval_gettext "Kernel tweaks")" 165 | little_step sound_server "$(eval_gettext "Sound server configuration")" 166 | little_step setup_system_loaders "$(eval_gettext "System loaders configuration")" 167 | little_step usefull_package "$(eval_gettext "Useful package installation")" 168 | little_step configure_sysctl_tweaks "$(eval_gettext "sysctl kernel tweaks")" 169 | little_step firewall "$(eval_gettext "Firewall installation")" 170 | # little_step apparmor "$(eval_gettext "Apparmor installation")" 171 | little_step shell_config "$(eval_gettext "Shell configuration")" 172 | little_step add_groups_to_user "$(eval_gettext "Adding user to necessary groups")" 173 | 174 | # Driver installation 175 | display_step "$(eval_gettext "System configuration")" 176 | sleep 1 177 | little_step video_drivers "$(eval_gettext "Video drivers installation")" 178 | little_step gamepad "$(eval_gettext "Gamepad configuration")" 179 | little_step printer "$(eval_gettext "Printer configuration")" 180 | little_step bluetooth "$(eval_gettext "Bluetooth configuration")" 181 | 182 | # Desktop environment configuration 183 | display_step "$(eval_gettext "Environment configuration")" 184 | sleep 1 185 | little_step detect_de "$(eval_gettext "Desktop environment detection")" 186 | 187 | # Software installation 188 | sleep 1 189 | display_step "$(eval_gettext "Software installation")" 190 | little_step install_software "$(eval_gettext "Software installation")" 191 | 192 | # Final wrap-up 193 | sleep 1 194 | endscript "${start_time}" 195 | } 196 | 197 | # Launch main procedure 198 | main 199 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 🚀 ARCHITECT SCRIPT 2 | 3 | [🇫🇷 Passer à la version française](#script-architect-fr) 4 | [📚 Architect Wiki](https://github.com/Cardiacman13/Architect/wiki) 5 | 6 | A post-install script designed to set up a complete and ready-to-use **Arch Linux system** right after using `archinstall`. Optimized for **gamers**, this script provides modular configuration options, minimal bloat, and performance in mind. 7 | 8 | --- 9 | 10 | > ⚠️ **DISCLAIMER** 11 | > This script is derived from personal post-install notes and fully suits my hardware and needs. It has been thoroughly tested on my system but **comes with no warranty** for compatibility on your machine. 12 | > 13 | > This is not a distribution. It's a helper to **speed up post-installation**, and its maintenance is your responsibility. 14 | > 15 | > Arch Linux is a **DIY (Do It Yourself)** distribution. It assumes you have technical knowledge or are willing to read the documentation. If you're not self-sufficient, Arch is not for you. 16 | > 17 | > > 📌 From the [Arch Wiki](https://wiki.archlinux.org/title/Arch_Linux): 18 | > > _"While many GNU/Linux distributions attempt to be more user-friendly, Arch Linux has always been and will remain a user-centric distribution. It is designed for competent GNU/Linux users who are willing to read documentation and solve their own problems."_ 19 | > > 20 | > > Running Arch without reading documentation defeats its purpose. 21 | > > 22 | > 🧠 **Note:** If you are using an **NVIDIA GPU**, it must be from the **16xx (Turing) series or newer** to use the **`nvidia-open-dkms`** driver (open kernel modules). 23 | > 24 | > If you own a **Pascal GTX 10xx** or an **older GPU** (e.g., **Maxwell**, **Kepler**, or earlier such as **GTX 9xx / 8xx / 7xx**), you need the **proprietary driver** instead. 25 | > In that case, run the following command after the script: 26 | > ```bash 27 | > sudo pacman -S nvidia-dkms 28 | > ``` 29 | > When prompted by `pacman`, **replace** `nvidia-open-dkms` with `nvidia-dkms`. 30 | > > ⚠️ **Important information:** 31 | > [NVIDIA is planning to drop support for its Maxwell, Pascal, and Volta GPUs, along with the legacy proprietary driver](https://www.phoronix.com/news/Maxwell-Pascal-Volta-Legacy-Near). 32 | > If you're using one of these GPUs, it's strongly recommended to upgrade to a newer graphics card, ideally an **AMD GPU** or a **NVIDIA Turing or newer** model that supports the new open kernel modules (`nvidia-open`). 33 | 34 | --- 35 | 36 | ## ⚙️ Installation Command 37 | 38 | ```bash 39 | sudo pacman -S --needed git base-devel \ 40 | && git clone https://github.com/Cardiacman13/Architect.git ~/Architect \ 41 | && cd ~/Architect \ 42 | && chmod +x ./architect.sh \ 43 | && ./architect.sh 44 | ``` 45 | 46 | At the end of the script, you can delete the ~/Architect folder. 47 | 48 | [🧠 Configure Arch the easy way - Architect Script by Cardiac](https://youtu.be/0MV3MxmO7ns?si=eOMc-e4wdSwv1Fbb) 49 | 50 | [![Configure Arch the easy way](https://img.youtube.com/vi/0MV3MxmO7ns/0.jpg)](https://youtu.be/0MV3MxmO7ns?si=eOMc-e4wdSwv1Fbb) 51 | 52 | --- 53 | 54 | ## 🧩 Features Overview 55 | 56 | 1. **Pacman Setup** — Optimized package manager (parallel downloads, color, etc.) 57 | 2. **Shell Aliases** — Fast commands like: 58 | - `update-arch` 59 | - `clean-arch` 60 | - `fix-key` 61 | - `update-mirrors` 62 | 3. **GPU Configuration** — NVIDIA/AMD/Intel setup. 63 | 4. **AUR Support** — Install `yay` or `paru`, depending on your preference. 64 | 5. **Optional Components** — Printers, Firewall, Bluetooth, Sound, etc. 65 | 6. **Extra Software** — Browsers, games, apps, media tools, and more. 66 | 67 | --- 68 | 69 | ## 🔗 Resources 70 | 71 | - 📖 [ArchWiki](https://wiki.archlinux.org/) 72 | - [📚 Architect Wiki](https://github.com/Cardiacman13/Architect/wiki) 73 | --- 74 | 75 | 76 | 77 | # 🚀 SCRIPT ARCHITECT 78 | 79 | Un script post-installation pour **Arch Linux**, destiné à configurer rapidement un système propre après `archinstall`. Pensé pour les joueurs recherchant **performance, minimalisme et flexibilité**. 80 | 81 | --- 82 | 83 | > ⚠️ **AVERTISSEMENT** 84 | > Ce script est tiré de notes personnelles. Il fonctionne parfaitement sur ma machine, mais **n'est garanti sur aucun autre système**. 85 | > 86 | > Ce n'est **pas une distribution**, mais un script pour **gagner du temps après l'installation**. Vous restez responsable de la maintenance de votre système. 87 | > 88 | > Arch Linux est une **distribution DIY**. Il est indispensable de savoir lire la documentation, comprendre ce que vous faites et être autonome en cas de souci. 89 | > 90 | > > 📌 Extrait du [Wiki officiel Arch Linux](https://wiki.archlinux.org/title/Arch_Linux_(Fran%C3%A7ais)) : 91 | > > _"Tandis que de nombreuses distributions GNU/Linux tentent d’être plus conviviales, Arch Linux a toujours été et restera centrée sur l’utilisateur. Elle est destinée aux utilisateurs compétents ou ayant une mentalité de bricoleur prêt à lire la documentation et à résoudre ses propres problèmes." 92 | > > 93 | > > Être sous Arch sans lire la doc, c’est aller à l’encontre de son principe. 94 | > > 95 | > 🧠 **Remarque :** Si vous utilisez un **GPU NVIDIA**, il doit appartenir à la série **16xx (Turing) ou plus récente** pour pouvoir utiliser le pilote **`nvidia-open-dkms`** (modules open source du noyau). 96 | > 97 | > Si vous possédez une carte graphique **Pascal GTX 10xx** ou plus ancienne (par exemple **Maxwell**, **Kepler**, etc. comme les **GTX 9xx / 8xx / 7xx**), vous devez utiliser le **pilote propriétaire** à la place. 98 | > Dans ce cas, exécutez la commande suivante après le script : 99 | > ```bash 100 | > sudo pacman -S nvidia-dkms 101 | > ``` 102 | > Lorsque `pacman` vous le demande, **remplacez** `nvidia-open-dkms` par `nvidia-dkms`. 103 | > > ⚠️ **Info importante :** 104 | > [NVIDIA prévoit d’abandonner prochainement le support de ses cartes Maxwell, Pascal et Volta ainsi que du pilote entièrement propriétaire](https://www.phoronix.com/news/Maxwell-Pascal-Volta-Legacy-Near). 105 | > Si vous utilisez l’un de ces GPU, il est fortement recommandé d’envisager une mise à niveau vers une carte plus récente, **de préférence AMD** ou **une NVIDIA Turing ou plus récente** compatible avec les nouveaux pilotes open kernel modules (`nvidia-open`). 106 | 107 | --- 108 | 109 | ## Le grand minimum à savoir pour utiliser Arch Linux : 110 | 111 | [Arch Linux - les bonnes pratiques avec Antiz !](https://youtu.be/4CiGmS3UM3Y?si=FARbltfaw2oXVBpO) 112 | 113 | [![Arch Linux - les bonnes pratiques avec Antiz !](https://img.youtube.com/vi/4CiGmS3UM3Y/0.jpg)](https://youtu.be/4CiGmS3UM3Y?si=FARbltfaw2oXVBpO) 114 | 115 | --- 116 | 117 | ## 🧠 Lancer le Script 118 | 119 | ```bash 120 | sudo pacman -S --needed git base-devel \ 121 | && git clone https://github.com/Cardiacman13/Architect.git ~/Architect \ 122 | && cd ~/Architect \ 123 | && chmod +x ./architect.sh \ 124 | && ./architect.sh 125 | ``` 126 | 127 | À la fin du script, vous pouvez supprimer le dossier `~/Architect`. 128 | 129 | --- 130 | 131 | ## 🧩 Fonctions Principales 132 | 133 | 1. **Configurer Pacman** — Amélioration du gestionnaire de paquets. 134 | 2. **Ajout d'Aliases** — Commandes utiles : 135 | - `update-arch` 136 | - `clean-arch` 137 | - `fix-key` 138 | - `update-mirrors` 139 | 3. **Configuration GPU** — Support complet pour NVIDIA, AMD, Intel. 140 | 4. **Support AUR** — Installe `yay` ou `paru`. 141 | 5. **Composants Optionnels** — Imprimantes, Firewall, Bluetooth, Audio, etc. 142 | 6. **Installation de Logiciels** — Navigateur, multimédia, développement, . 143 | 144 | --- 145 | 146 | ## 🔗 Ressources 147 | 148 | - 📖 [ArchWiki](https://wiki.archlinux.org/) 149 | - [📚 Architect Wiki](https://github.com/Cardiacman13/Architect/wiki) 150 | 151 | --- 152 | 153 | ## 🙏 Remerciements 154 | 155 | Merci à l'équipe d'Arch Linux, à la communauté Linux, aux mainteneurs AUR et à tous les contributeurs. 156 | -------------------------------------------------------------------------------- /src/software/install.sh: -------------------------------------------------------------------------------- 1 | # ============================================================================= 2 | # Software installation script with automatic configuration if needed 3 | # ============================================================================= 4 | 5 | # Load shared functions 6 | source src/cmd.sh 7 | 8 | # Declare associative arrays for each software category 9 | declare -A desktop_list 10 | declare -A system_list 11 | declare -A browser_list 12 | declare -A video_list 13 | declare -A picture_list 14 | declare -A gaming_list 15 | 16 | # Will store the complete list of packages to install 17 | selected_packages="" 18 | 19 | # ----------------------------------------------------------------------------- 20 | # Define software choices for each category 21 | # ----------------------------------------------------------------------------- 22 | function set_software_list() { 23 | desktop_list=( 24 | ["Discord"]="discord" 25 | ["Telegram"]="telegram-desktop" 26 | ["Spotify"]="spotify" 27 | ["LibreOffice en"]="libreoffice-fresh" 28 | ["LibreOffice fr"]="libreoffice-fresh libreoffice-fresh-fr" 29 | ["OnlyOffice"]="onlyoffice-bin" 30 | ["Audacity"]="audacity" 31 | ["Kazam"]="kazam" 32 | ["Visual Studio Code"]="visual-studio-code-bin" 33 | ["Visual Studio Code Open Source"]="code" 34 | ["Virtualbox"]="virtualbox virtualbox-host-dkms virtualbox-guest-iso" 35 | ["Virtmanager"]="qemu-full virt-manager virt-viewer dnsmasq vde2 bridge-utils openbsd-netcat dmidecode libguestfs" 36 | ["CrossOver"]="crossover" 37 | ) 38 | 39 | system_list=( 40 | ["Open RGB"]="openrgb i2c-tools" 41 | ["Open Razer"]="openrazer-daemon libnotify polychromatic" 42 | ["Arch Update"]="arch-update vim" 43 | ) 44 | 45 | picture_list=( 46 | ["Gimp"]="gimp" 47 | ["Krita"]="krita" 48 | ["Inkscape"]="inkscape" 49 | ["Blender"]="blender" 50 | ) 51 | 52 | video_list=( 53 | ["Kdenlive"]="kdenlive" 54 | ["OBS Studio"]="obs-studio" 55 | ["VLC"]="vlc" 56 | ["MPV"]="mpv" 57 | ) 58 | 59 | browser_list=( 60 | ["Firefox en"]="firefox" 61 | ["Firefox fr"]="firefox firefox-i18n-fr" 62 | ["Brave"]="brave-bin" 63 | ["Chromium"]="chromium" 64 | ["Vivaldi"]="vivaldi vivaldi-ffmpeg-codecs" 65 | ["Google Chrome"]="google-chrome" 66 | ["Microsoft Edge"]="microsoft-edge-stable-bin" 67 | ) 68 | 69 | gaming_list=( 70 | ["Steam"]="steam" 71 | ["Lutris"]="lutris wine-staging" 72 | ["Heroic Games Launcher (Epic Games, GOG, etc.)"]="heroic-games-launcher-bin" 73 | ["Prism Launcher (Minecraft)"]="prismlauncher-qt5 jdk8-openjdk" 74 | ["ProtonUp QT"]="protonup-qt" 75 | ["Goverlay"]="goverlay lib32-mangohud" 76 | ["Gamemode"]="gamemode lib32-gamemode" 77 | ) 78 | } 79 | 80 | # ----------------------------------------------------------------------------- 81 | # Display the available software, ask the user to make a choice, 82 | # and populate the global 'selected_packages' variable accordingly. 83 | # ----------------------------------------------------------------------------- 84 | function select_and_install() { 85 | declare -n software_list=$1 86 | local -r software_type=$2 87 | local i=1 88 | local options=() 89 | local input 90 | 91 | eval_gettext "\${GREEN}\${software_type}\${RESET} :"; echo 92 | for software in "${!software_list[@]}"; do 93 | printf " ${PURPLE}%2d${RESET}) %s\n" "$i" "$software" 94 | options+=("$software") 95 | ((i++)) 96 | done 97 | 98 | eval_gettext "\${BLUE}::\${RESET} Packages to install (e.g., 1 2 3, 1-3, all or press enter to skip): " 99 | read -ra input 100 | 101 | for item in "${input[@]}"; do 102 | if [[ "$item" == "$(eval_gettext "all")" ]]; then 103 | for software in "${!software_list[@]}"; do 104 | selected_packages+=" ${software_list[$software]} " 105 | done 106 | break 107 | elif [[ $item =~ ^[0-9]+$ ]]; then 108 | selected_packages+=" ${software_list[${options[$item - 1]}]} " 109 | elif [[ $item =~ ^[0-9]+-[0-9]+$ ]]; then 110 | IFS='-' read -ra range <<<"$item" 111 | for ((j = ${range[0]}; j <= ${range[1]}; j++)); do 112 | selected_packages+=" ${software_list[${options[$j - 1]}]} " 113 | done 114 | fi 115 | done 116 | } 117 | 118 | # ----------------------------------------------------------------------------- 119 | # Main function: 120 | # 1. Initialize software lists 121 | # 2. Let user select and install 122 | # 3. Perform post-install actions (groups, timers, etc.) 123 | # 4. Manage firewall configuration (firewalld and ufw) if needed 124 | # ----------------------------------------------------------------------------- 125 | function install_software() { 126 | # 1. Initialize lists 127 | set_software_list 128 | 129 | # 2. Selection 130 | select_and_install browser_list "$(eval_gettext "Browsers")" 131 | select_and_install system_list "$(eval_gettext "System Software")" 132 | select_and_install desktop_list "$(eval_gettext "Desktop Apps")" 133 | select_and_install video_list "$(eval_gettext "Video Software")" 134 | select_and_install picture_list "$(eval_gettext "Image Editors")" 135 | select_and_install gaming_list "$(eval_gettext "Gaming Software")" 136 | 137 | # Retrieve selected packages to install 138 | local -r packages="${selected_packages}" 139 | selected_packages="" 140 | 141 | # Install via AUR helper previously chosen 142 | install_lst "${packages}" "aur" 143 | 144 | # 3. Post-install actions 145 | # ------------------------------------------------------------------------- 146 | # Arch Update 147 | if [[ "${packages}" =~ "arch-update" ]]; then 148 | exec_log "systemctl --user enable arch-update.timer" "$(eval_gettext "Enable arch-update.timer")" 149 | exec_log "arch-update --tray --enable" "$(eval_gettext "Enable arch-update tray")" 150 | fi 151 | 152 | # Open Razer 153 | if [[ "${packages}" =~ "openrazer-daemon" ]]; then 154 | exec_log "sudo usermod -aG plugdev $(whoami)" "$(eval_gettext "Add the current user to the plugdev group")" 155 | fi 156 | 157 | # VirtualBox 158 | if [[ "${packages}" =~ "virtualbox" ]]; then 159 | exec_log "sudo usermod -aG vboxusers $(whoami)" "$(eval_gettext "Add the current user to the vboxusers group")" 160 | exec_log "sudo systemctl enable vboxweb.service" "$(eval_gettext "Enable vboxweb")" 161 | fi 162 | 163 | # Virt-Manager 164 | if [[ "${packages}" =~ "virt-manager" ]]; then 165 | exec_log "sudo usermod -aG libvirt $(whoami)" "$(eval_gettext "Add the current user to the libvirt group")" 166 | exec_log "sudo usermod -aG kvm $(whoami)" "$(eval_gettext "Add the current user to the kvm group")" 167 | exec_log "sudo systemctl enable --now libvirtd" "$(eval_gettext "Enable libvirtd")" 168 | 169 | # Configure libvirtd socket (permissions) 170 | sudo sed -i 's/#unix_sock_group = "libvirt"/unix_sock_group = "libvirt"/' /etc/libvirt/libvirtd.conf 171 | sudo sed -i 's/#unix_sock_rw_perms = "0770"/unix_sock_rw_perms = "0770"/' /etc/libvirt/libvirtd.conf 172 | 173 | # -- Open relevant ports if firewalld is installed 174 | if command -v firewall-cmd >/dev/null 2>&1; then 175 | sudo firewall-cmd --permanent --add-service=libvirt &> /dev/null 176 | sudo firewall-cmd --permanent --add-port=5900-5999/tcp &> /dev/null 177 | sudo firewall-cmd --permanent --add-port=16509/tcp &> /dev/null 178 | sudo firewall-cmd --permanent --add-port=5666/tcp &> /dev/null 179 | sudo firewall-cmd --reload &> /dev/null 180 | fi 181 | 182 | # -- Open the same ports if ufw is installed 183 | if command -v ufw >/dev/null 2>&1; then 184 | sudo ufw allow 5900:5999/tcp 185 | sudo ufw allow 16509/tcp 186 | sudo ufw allow 5666/tcp 187 | sudo ufw reload &> /dev/null 188 | fi 189 | fi 190 | 191 | # Gamemode 192 | if [[ "${packages}" =~ "gamemode" ]]; then 193 | exec_log "sudo usermod -aG gamemode $(whoami)" "$(eval_gettext "Add the current user to the gamemode group")" 194 | 195 | # Default configuration for /etc/gamemode.ini 196 | local config_content='[general] 197 | reaper_freq=5 198 | desiredgov=performance 199 | igpu_desiredgov=powersave 200 | igpu_power_threshold=0.3 201 | softrealtime=off 202 | renice=0 203 | ioprio=0 204 | inhibit_screensaver=1 205 | disable_splitlock=1 206 | 207 | [filter] 208 | ;whitelist=RiseOfTheTombRaider 209 | ;blacklist=HalfLife3 210 | 211 | [gpu] 212 | ;apply_gpu_optimisations=0 213 | ;gpu_device=0 214 | ;nv_powermizer_mode=1 215 | ;nv_core_clock_mhz_offset=0 216 | ;nv_mem_clock_mhz_offset=0 217 | ;amd_performance_level=high 218 | 219 | [cpu] 220 | ;park_cores=no 221 | ;pin_cores=yes 222 | 223 | [supervisor] 224 | ;supervisor_whitelist= 225 | ;supervisor_blacklist= 226 | ;require_supervisor=0 227 | 228 | [custom] 229 | ;start=notify-send "GameMode started" 230 | ;end=notify-send "GameMode ended" 231 | ;script_timeout=10' 232 | 233 | if [ ! -f /etc/gamemode.ini ]; then 234 | echo "$config_content" | sudo tee /etc/gamemode.ini > /dev/null 235 | fi 236 | fi 237 | 238 | # 4. Firewall configuration for Steam if necessary 239 | # ------------------------------------------------------------------------- 240 | if [[ "${packages}" =~ "steam" ]]; then 241 | # -- firewalld 242 | if command -v firewall-cmd >/dev/null 2>&1; then 243 | # Steam Remote Play https://help.steampowered.com/en/faqs/view/0689-74B8-92AC-10F2 244 | sudo firewall-cmd --permanent --add-port=27031-27036/udp &> /dev/null 245 | sudo firewall-cmd --permanent --add-port=27036/tcp &> /dev/null 246 | sudo firewall-cmd --permanent --add-port=27037/tcp &> /dev/null 247 | # Apply changes 248 | sudo firewall-cmd --reload &> /dev/null 249 | fi 250 | 251 | # -- ufw 252 | if command -v ufw >/dev/null 2>&1; then 253 | # Steam Remote Play https://help.steampowered.com/en/faqs/view/0689-74B8-92AC-10F2 254 | sudo ufw allow 27031:27036/udp 255 | sudo ufw allow 27036/tcp 256 | sudo ufw allow 27037/tcp 257 | # Apply changes 258 | sudo ufw reload &> /dev/null 259 | fi 260 | fi 261 | } 262 | -------------------------------------------------------------------------------- /po/architect.pot: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # FIRST AUTHOR , YEAR. 5 | # 6 | #, fuzzy 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: Architect V2.0.4\n" 10 | "Report-Msgid-Bugs-To: \n" 11 | "POT-Creation-Date: 2023-12-31 18:51+0100\n" 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 13 | "Last-Translator: FULL NAME \n" 14 | "Language-Team: LANGUAGE \n" 15 | "Language: \n" 16 | "MIME-Version: 1.0\n" 17 | "Content-Type: text/plain; charset=UTF-8\n" 18 | "Content-Transfer-Encoding: 8bit\n" 19 | 20 | #: src/de/detect.sh:8 src/de/detect.sh:11 21 | #, sh-format 22 | msgid "What is your desktop environment" 23 | msgstr "" 24 | 25 | #: src/de/gnome.sh:42 26 | #, sh-format 27 | msgid "Setting gtk theme to adw-gtk3" 28 | msgstr "" 29 | 30 | #: src/de/gnome.sh:43 31 | #, sh-format 32 | msgid "Enabling numlock on startup" 33 | msgstr "" 34 | 35 | #: src/de/gnome.sh:44 36 | #, sh-format 37 | msgid "Disable GDM rules to unlock Wayland" 38 | msgstr "" 39 | 40 | #: src/de/kde.sh:33 41 | #, sh-format 42 | msgid "Creating /etc/sddm.conf" 43 | msgstr "" 44 | 45 | #: src/de/kde.sh:35 46 | #, sh-format 47 | msgid "Setting Breeze theme for SDDM" 48 | msgstr "" 49 | 50 | #: src/de/kde.sh:36 51 | #, sh-format 52 | msgid "Setting Numlock=on for SDDM" 53 | msgstr "" 54 | 55 | #: src/de/kde.sh:37 56 | #, sh-format 57 | msgid "Setting GTK_USE_PORTAL=1" 58 | msgstr "" 59 | 60 | #: src/de/xfce4.sh:48 61 | #, sh-format 62 | msgid "Updating user directories" 63 | msgstr "" 64 | 65 | #: src/software/install.sh:76 66 | #, sh-format 67 | msgid "${GREEN}${software_type} software${RESET} :" 68 | msgstr "" 69 | 70 | #: src/software/install.sh:83 71 | #, sh-format 72 | msgid "" 73 | "${BLUE}::${RESET} Packages to install (e.g., 1 2 3, 1-3, all or press enter " 74 | "to skip): " 75 | msgstr "" 76 | 77 | #: src/software/install.sh:120 78 | #, sh-format 79 | msgid "Enable arch-update.timer" 80 | msgstr "" 81 | 82 | #: src/software/install.sh:124 83 | #, sh-format 84 | msgid "Add the current user to the vboxusers group" 85 | msgstr "" 86 | 87 | #: src/software/install.sh:125 88 | #, sh-format 89 | msgid "Enable vboxweb" 90 | msgstr "" 91 | 92 | #: src/system/config/pacman.sh:4 93 | #, sh-format 94 | msgid "Enabling color in pacman" 95 | msgstr "" 96 | 97 | #: src/system/config/pacman.sh:5 98 | #, sh-format 99 | msgid "Enabling verbose package lists in pacman" 100 | msgstr "" 101 | 102 | #: src/system/config/pacman.sh:6 103 | #, sh-format 104 | msgid "Enabling parallel downloads and ILoveCandy in pacman" 105 | msgstr "" 106 | 107 | #: src/system/config/pacman.sh:7 108 | #, sh-format 109 | msgid "Enabling multilib repository" 110 | msgstr "" 111 | 112 | #: src/system/config/pacman.sh:8 113 | #, sh-format 114 | msgid "Enabling multithread compilation" 115 | msgstr "" 116 | 117 | #: src/system/config/pacman.sh:9 118 | #, sh-format 119 | msgid "Installing pacman-contrib" 120 | msgstr "" 121 | 122 | #: src/system/config/pacman.sh:10 123 | #, sh-format 124 | msgid "Enabling paccache timer" 125 | msgstr "" 126 | 127 | #: src/system/config/pacman.sh:15 128 | #, sh-format 129 | msgid "Updating mirrorlist ${RED}(might be long)${RESET}" 130 | msgstr "" 131 | 132 | #: src/system/config/pacman.sh:16 133 | #, sh-format 134 | msgid "Updating full system ${RED}(might be long)${RESET}" 135 | msgstr "" 136 | 137 | #: src/system/config/aur.sh:5 138 | #, sh-format 139 | msgid "Installing git" 140 | msgstr "" 141 | 142 | #: src/system/config/aur.sh:19 143 | #, sh-format 144 | msgid "which aur helper do you want to install ? (yay/paru) : " 145 | msgstr "" 146 | 147 | #: src/system/config/aur.sh:22 src/system/drivers/gpu.sh:17 148 | #: src/system/shell.sh:35 149 | #, sh-format 150 | msgid "${GREEN}You chose ${choice}${RESET}" 151 | msgstr "" 152 | 153 | #: src/system/config/aur.sh:34 154 | #, sh-format 155 | msgid "Cloning $DIR" 156 | msgstr "" 157 | 158 | #: src/system/config/aur.sh:36 159 | #, sh-format 160 | msgid "Installing ${AUR}" 161 | msgstr "" 162 | 163 | #: src/system/config/aur.sh:38 164 | #, sh-format 165 | msgid "Deleting directory $DIR" 166 | msgstr "" 167 | 168 | #: src/system/config/aur.sh:43 src/system/config/aur.sh:46 169 | #, sh-format 170 | msgid "Configuring ${AUR}" 171 | msgstr "" 172 | 173 | #: src/system/config/aur.sh:44 174 | #, sh-format 175 | msgid "Enabling SudoLoop option for yay" 176 | msgstr "" 177 | 178 | #: src/system/config/aur.sh:47 179 | #, sh-format 180 | msgid "Enabling BottomUp option for paru" 181 | msgstr "" 182 | 183 | #: src/system/config/aur.sh:48 184 | #, sh-format 185 | msgid "Enabling SudoLoop option for paru" 186 | msgstr "" 187 | 188 | #: src/system/config/aur.sh:49 189 | #, sh-format 190 | msgid "Enabling CombinedUpgrade option for paru" 191 | msgstr "" 192 | 193 | #: src/system/config/aur.sh:50 194 | #, sh-format 195 | msgid "Enabling UpgradeMenu option for paru" 196 | msgstr "" 197 | 198 | #: src/system/config/aur.sh:51 199 | #, sh-format 200 | msgid "Enabling NewsOnUpgrade option for paru" 201 | msgstr "" 202 | 203 | #: src/system/config/aur.sh:52 204 | #, sh-format 205 | msgid "Enabling SkipReview option for paru" 206 | msgstr "" 207 | 208 | #: src/system/drivers/amd.sh:19 209 | #, sh-format 210 | msgid "" 211 | "Would you like to install ROCM (${RED}say No if unsure${RESET}) (y/N) : " 212 | msgstr "" 213 | 214 | #: src/system/drivers/devices.sh:4 215 | #, sh-format 216 | msgid "" 217 | "Would you want to install xpadneo ? (Can improve xbox gamepad support, ${RED}" 218 | "say No if unsure${RESET}) (y/N) : " 219 | msgstr "" 220 | 221 | #: src/system/drivers/devices.sh:11 222 | #, sh-format 223 | msgid "Do you want to use PS5 controllers ? (y/N) : " 224 | msgstr "" 225 | 226 | #: src/system/drivers/devices.sh:20 227 | #, sh-format 228 | msgid "Do you want to use a printer ? (y/N) : " 229 | msgstr "" 230 | 231 | #: src/system/drivers/devices.sh:40 232 | #, sh-format 233 | msgid "Do you want to use a EPSON printer ? (y/N) : " 234 | msgstr "" 235 | 236 | #: src/system/drivers/devices.sh:49 237 | #, sh-format 238 | msgid "Do you want to use a HP printer ? (y/N) : " 239 | msgstr "" 240 | 241 | #: src/system/drivers/devices.sh:61 242 | #, sh-format 243 | msgid "enabling avahi-daemon service" 244 | msgstr "" 245 | 246 | #: src/system/drivers/devices.sh:61 247 | #, sh-format 248 | msgid "Disabling systemd-resolved service" 249 | msgstr "" 250 | 251 | #: src/system/drivers/devices.sh:62 252 | #, sh-format 253 | msgid "enabling cups service" 254 | msgstr "" 255 | 256 | #: src/system/drivers/devices.sh:67 257 | #, sh-format 258 | msgid "Do you want to use bluetooth ? (y/N) : " 259 | msgstr "" 260 | 261 | #: src/system/drivers/devices.sh:79 262 | #, sh-format 263 | msgid "enabling bluetooth service" 264 | msgstr "" 265 | 266 | #: src/system/drivers/gpu.sh:10 src/system/drivers/gpu.sh:13 267 | #, sh-format 268 | msgid "What is your graphics card type ?" 269 | msgstr "" 270 | 271 | #: src/system/drivers/nvidia.sh:4 272 | #, sh-format 273 | msgid "Setting nvidia power management option" 274 | msgstr "" 275 | 276 | #: src/system/drivers/nvidia.sh:5 277 | #, sh-format 278 | msgid "Setting nvidia-drm modeset=1 option" 279 | msgstr "" 280 | 281 | #: src/system/drivers/nvidia.sh:9 282 | #, sh-format 283 | msgid "Do you have an Intel/Nvidia Laptop (y/N) : " 284 | msgstr "" 285 | 286 | #: src/system/drivers/nvidia.sh:53 287 | #, sh-format 288 | msgid "Clean old nvidia drivers dependencies" 289 | msgstr "" 290 | 291 | #: src/system/drivers/nvidia.sh:55 292 | #, sh-format 293 | msgid "" 294 | "Do you want to use NVIDIA-ALL ${RED}/!\\ caution: if you choose nvidia-all, " 295 | "you'll need to know how to maintain it.${RESET} ? (y/N) : " 296 | msgstr "" 297 | 298 | #: src/system/drivers/nvidia.sh:60 299 | #, sh-format 300 | msgid "cloning nvidia-all repository" 301 | msgstr "" 302 | 303 | #: src/system/drivers/nvidia.sh:64 304 | #, sh-format 305 | msgid "removal of nvidia-all repository" 306 | msgstr "" 307 | 308 | #: src/system/drivers/nvidia.sh:84 309 | #, sh-format 310 | msgid "Do you want to install CUDA (${RED}say No if unsure${RESET}) (y/N) : " 311 | msgstr "" 312 | 313 | #: src/system/drivers/vm.sh:21 314 | #, sh-format 315 | msgid "activation of vboxservice" 316 | msgstr "" 317 | 318 | #: src/system/drivers/vm.sh:22 319 | #, sh-format 320 | msgid "activation of VBoxClient-all" 321 | msgstr "" 322 | 323 | #: src/system/grub-btrfs.sh:2 324 | #, sh-format 325 | msgid "" 326 | "Do you want to install and setup grub-btrfs and timeshift ${RED}say No if " 327 | "unsure${RESET} /!\\ ? (y/N) : " 328 | msgstr "" 329 | 330 | #: src/system/grub-btrfs.sh:7 331 | #, sh-format 332 | msgid "Enable cronie" 333 | msgstr "" 334 | 335 | #: src/system/grub-btrfs.sh:8 336 | #, sh-format 337 | msgid "Enable grub-btrfsd" 338 | msgstr "" 339 | 340 | #: src/system/grub-btrfs.sh:9 341 | #, sh-format 342 | msgid "setup grub-btrfsd for timeshift" 343 | msgstr "" 344 | 345 | #: src/system/internet.sh:8 346 | #, sh-format 347 | msgid "${RED}Error: No Internet connection${RESET}" 348 | msgstr "" 349 | 350 | #: src/system/kernel.sh:20 351 | #, sh-format 352 | msgid "Setting ${key} to ${value}" 353 | msgstr "" 354 | 355 | #: src/system/other.sh:26 356 | #, sh-format 357 | msgid "Cleaning old sound server dependencies" 358 | msgstr "" 359 | 360 | #: src/system/other.sh:31 361 | #, sh-format 362 | msgid "Checking if GRUB is installed" 363 | msgstr "" 364 | 365 | #: src/system/other.sh:38 366 | #, sh-format 367 | msgid "Creating /etc/pacman.d/hooks" 368 | msgstr "" 369 | 370 | #: src/system/other.sh:40 371 | #, sh-format 372 | msgid "Creating /etc/pacman.d/hooks/grub.hook" 373 | msgstr "" 374 | 375 | #: src/system/other.sh:53 376 | #, sh-format 377 | msgid "Setting up GRUB hook" 378 | msgstr "" 379 | 380 | #: src/system/other.sh:56 381 | #, sh-format 382 | msgid "Enabling os-prober" 383 | msgstr "" 384 | 385 | #: src/system/other.sh:57 386 | #, sh-format 387 | msgid "Running os-prober" 388 | msgstr "" 389 | 390 | #: src/system/other.sh:58 391 | #, sh-format 392 | msgid "Updating GRUB" 393 | msgstr "" 394 | 395 | #: src/system/other.sh:62 396 | #, sh-format 397 | msgid "" 398 | "Do you want to install a firewall /!\\ Install and activate firewalld? The " 399 | "default configuration may block access to printers and other devices on your " 400 | "local network ? (y/N) : " 401 | msgstr "" 402 | 403 | #: src/system/other.sh:67 404 | #, sh-format 405 | msgid "Enabling firewalld" 406 | msgstr "" 407 | 408 | #: src/system/shell.sh:31 409 | #, sh-format 410 | msgid "What is your default shell ? (bash/fish) : " 411 | msgstr "" 412 | 413 | #: src/system/shell.sh:46 414 | #, sh-format 415 | msgid "Setting default shell to fish..." 416 | msgstr "" 417 | 418 | #: src/system/shell.sh:58 419 | #, sh-format 420 | msgid "Invalid choice" 421 | msgstr "" 422 | 423 | #: src/end.sh:5 424 | #, sh-format 425 | msgid "Done in ${GREEN}${duration}${RESET} seconds." 426 | msgstr "" 427 | 428 | #: src/end.sh:8 429 | #, sh-format 430 | msgid "Do you want to upload the log file to a pastebin? (y/N) " 431 | msgstr "" 432 | 433 | #: src/end.sh:12 434 | #, sh-format 435 | msgid "Uploading log file to pastebin..." 436 | msgstr "" 437 | 438 | #: src/end.sh:14 439 | #, sh-format 440 | msgid "Log file uploaded to ${url}" 441 | msgstr "" 442 | 443 | #: src/end.sh:17 444 | #, sh-format 445 | msgid "" 446 | "${GREEN}Script completed successfully, the system must restart${RESET}: " 447 | "Press ${GREEN}Enter${RESET} to restart or ${RED}Ctrl+C${RESET} to cancel." 448 | msgstr "" 449 | 450 | #: src/end.sh:19 451 | #, sh-format 452 | msgid "${GREEN}Restarting in ${i} seconds...${RESET}" 453 | msgstr "" 454 | 455 | #: src/init.sh:8 456 | #, sh-format 457 | msgid "Script Architect for Arch Linux" 458 | msgstr "" 459 | 460 | #: src/init.sh:20 461 | #, sh-format 462 | msgid "${RED}This script will make changes to your system.${RESET}" 463 | msgstr "" 464 | 465 | #: src/init.sh:21 466 | #, sh-format 467 | msgid "" 468 | "Some steps may take longer, depending on your Internet connection and CPU." 469 | msgstr "" 470 | 471 | #: src/init.sh:22 472 | #, sh-format 473 | msgid "" 474 | "Press ${GREEN}Enter${RESET} to continue, or ${RED}Ctrl+C${RESET} to cancel." 475 | msgstr "" 476 | 477 | #: src/cmd.sh:120 478 | #, sh-format 479 | msgid "${RED}Error: installation failed${RESET}" 480 | msgstr "" 481 | 482 | #: architect.sh:18 483 | #, sh-format 484 | msgid "${GREEN}Root privileges granted${RESET}" 485 | msgstr "" 486 | 487 | #: architect.sh:20 488 | #, sh-format 489 | msgid "${RED}Root privileges denied${RESET}" 490 | msgstr "" 491 | 492 | #: architect.sh:82 493 | #, sh-format 494 | msgid "Initialization" 495 | msgstr "" 496 | 497 | #: architect.sh:87 498 | #, sh-format 499 | msgid "System preparation" 500 | msgstr "" 501 | 502 | #: architect.sh:89 503 | #, sh-format 504 | msgid "Pacman configuration" 505 | msgstr "" 506 | 507 | #: architect.sh:90 508 | #, sh-format 509 | msgid "AUR helper installation" 510 | msgstr "" 511 | 512 | #: architect.sh:91 513 | #, sh-format 514 | msgid "Mirrorlist configuration" 515 | msgstr "" 516 | 517 | #: architect.sh:92 518 | #, sh-format 519 | msgid "Kernel headers installation" 520 | msgstr "" 521 | 522 | #: architect.sh:93 523 | #, sh-format 524 | msgid "Max map count configuration" 525 | msgstr "" 526 | 527 | #: architect.sh:94 528 | #, sh-format 529 | msgid "Sound server configuration" 530 | msgstr "" 531 | 532 | #: architect.sh:95 533 | #, sh-format 534 | msgid "System loaders configuration" 535 | msgstr "" 536 | 537 | #: architect.sh:96 538 | #, sh-format 539 | msgid "Useful package installation" 540 | msgstr "" 541 | 542 | #: architect.sh:97 543 | #, sh-format 544 | msgid "grub-btrfs setup" 545 | msgstr "" 546 | 547 | #: architect.sh:98 548 | #, sh-format 549 | msgid "Firewall installation" 550 | msgstr "" 551 | 552 | #: architect.sh:99 553 | #, sh-format 554 | msgid "Shell configuration" 555 | msgstr "" 556 | 557 | #: architect.sh:102 558 | #, sh-format 559 | msgid "System configuration" 560 | msgstr "" 561 | 562 | #: architect.sh:104 563 | #, sh-format 564 | msgid "Video drivers installation" 565 | msgstr "" 566 | 567 | #: architect.sh:105 568 | #, sh-format 569 | msgid "Gamepad configuration" 570 | msgstr "" 571 | 572 | #: architect.sh:106 573 | #, sh-format 574 | msgid "Printer configuration" 575 | msgstr "" 576 | 577 | #: architect.sh:107 578 | #, sh-format 579 | msgid "Bluetooth configuration" 580 | msgstr "" 581 | 582 | #: architect.sh:110 583 | #, sh-format 584 | msgid "Environment configuration" 585 | msgstr "" 586 | 587 | #: architect.sh:112 588 | #, sh-format 589 | msgid "Desktop environment detection" 590 | msgstr "" 591 | 592 | #: architect.sh:116 architect.sh:117 593 | #, sh-format 594 | msgid "Software installation" 595 | msgstr "" 596 | -------------------------------------------------------------------------------- /po/fr/fr.po: -------------------------------------------------------------------------------- 1 | # French translations for Architect package 2 | # Traductions françaises du paquet Architect. 3 | # Copyright (C) 2023 THE Architect'S COPYRIGHT HOLDER 4 | # This file is distributed under the same license as the Architect package. 5 | # Cardiac 2025. 6 | # 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: Architect V2.0.4\n" 10 | "Report-Msgid-Bugs-To: \n" 11 | "POT-Creation-Date: 2025-05-19 18:07+0200\n" 12 | "PO-Revision-Date: 2023-12-31 17:53+0100\n" 13 | "Last-Translator: Skythrew \n" 14 | "Language-Team: French\n" 15 | "Language: fr\n" 16 | "MIME-Version: 1.0\n" 17 | "Content-Type: text/plain; charset=UTF-8\n" 18 | "Content-Transfer-Encoding: 8bit\n" 19 | "Plural-Forms: nplurals=2; plural=(n > 1);\n" 20 | 21 | #: architect.sh:23 22 | #, sh-format 23 | msgid "Usage : ./architect.sh [OPTION]" 24 | msgstr "Utilisation : ./architect.sh [OPTION]" 25 | 26 | #: architect.sh:24 27 | #, sh-format 28 | msgid "Options :" 29 | msgstr "Options :" 30 | 31 | #: architect.sh:25 32 | #, sh-format 33 | msgid " -h --help : Display this help." 34 | msgstr " -h --help : Affiche cette aide." 35 | 36 | #: architect.sh:26 37 | #, sh-format 38 | msgid " -v --verbose : Verbose mode." 39 | msgstr " -v --verbose : Mode verbeux." 40 | 41 | #: architect.sh:27 42 | #, sh-format 43 | msgid " --no-reboot : Do not reboot the system at the end of the script." 44 | msgstr " --no-reboot : Ne pas redémarrer le système à la fin du script." 45 | 46 | #: architect.sh:65 47 | #, sh-format 48 | msgid "" 49 | "${RED}Do not run this script as root, use a user with sudo rights${RESET}" 50 | msgstr "" 51 | "${RED}N'exécutez pas ce script en root, utilisez un utilisateur " 52 | "sudoer${RESET}" 53 | 54 | #: architect.sh:71 55 | #, sh-format 56 | msgid "${GREEN}Root privileges granted${RESET}" 57 | msgstr "${GREEN}Privilèges d'administrateur accordés${RESET}" 58 | 59 | #: architect.sh:73 60 | #, sh-format 61 | msgid "${RED}Root privileges denied${RESET}" 62 | msgstr "${RED}Privilèges d'administrateur refusés${RESET}" 63 | 64 | #: architect.sh:153 65 | #, sh-format 66 | msgid "Initialization" 67 | msgstr "Initialisation" 68 | 69 | #: architect.sh:158 70 | #, sh-format 71 | msgid "System preparation" 72 | msgstr "Préparation du système" 73 | 74 | #: architect.sh:160 75 | #, sh-format 76 | msgid "Pacman configuration" 77 | msgstr "Configuration de pacman" 78 | 79 | #: architect.sh:161 80 | #, sh-format 81 | msgid "AUR helper installation" 82 | msgstr "Installation du gestionnaire AUR" 83 | 84 | #: architect.sh:162 85 | #, sh-format 86 | msgid "Mirrorlist configuration" 87 | msgstr "Configuration de la liste des miroirs" 88 | 89 | #: architect.sh:163 90 | #, sh-format 91 | msgid "Kernel headers installation" 92 | msgstr "Installation des en-têtes (headers) du kernel" 93 | 94 | #: architect.sh:164 95 | #, sh-format 96 | msgid "Kernel tweaks" 97 | msgstr "Optimisations du noyau" 98 | 99 | #: architect.sh:165 100 | #, sh-format 101 | msgid "Sound server configuration" 102 | msgstr "Configuration du serveur son" 103 | 104 | #: architect.sh:166 105 | #, sh-format 106 | msgid "System loaders configuration" 107 | msgstr "Configuration des chargeurs de démarrage" 108 | 109 | #: architect.sh:167 110 | #, sh-format 111 | msgid "Useful package installation" 112 | msgstr "Installation des paquets utiles" 113 | 114 | #: architect.sh:168 115 | #, sh-format 116 | msgid "sysctl kernel tweaks" 117 | msgstr "Optimisations sysctl du noyau" 118 | 119 | #: architect.sh:169 120 | #, sh-format 121 | msgid "Firewall installation" 122 | msgstr "Configuration du pare-feu" 123 | 124 | #: architect.sh:171 125 | #, sh-format 126 | msgid "Shell configuration" 127 | msgstr "Configuration du shell" 128 | 129 | #: architect.sh:172 130 | #, sh-format 131 | msgid "Adding user to necessary groups" 132 | msgstr "Ajout de l'utilisateur aux groupes nécessaires" 133 | 134 | #: architect.sh:175 135 | #, sh-format 136 | msgid "System configuration" 137 | msgstr "Configuration du système" 138 | 139 | #: architect.sh:177 140 | #, sh-format 141 | msgid "Video drivers installation" 142 | msgstr "Installation des pilotes vidéo" 143 | 144 | #: architect.sh:178 145 | #, sh-format 146 | msgid "Gamepad configuration" 147 | msgstr "Configuration des manettes" 148 | 149 | #: architect.sh:179 150 | #, sh-format 151 | msgid "Printer configuration" 152 | msgstr "Configuration de(s) imprimante(s)" 153 | 154 | #: architect.sh:180 155 | #, sh-format 156 | msgid "Bluetooth configuration" 157 | msgstr "Configuration du bluetooth" 158 | 159 | #: architect.sh:183 160 | #, sh-format 161 | msgid "Environment configuration" 162 | msgstr "Configuration de l'environnement" 163 | 164 | #: architect.sh:185 165 | #, sh-format 166 | msgid "Desktop environment detection" 167 | msgstr "Détection de l'environnement de bureau" 168 | 169 | #: architect.sh:189 architect.sh:190 170 | #, sh-format 171 | msgid "Software installation" 172 | msgstr "Installation de logiciels" 173 | 174 | #: src/cmd.sh:57 175 | #, sh-format 176 | msgid "${GREEN}[I]${RESET} Package ${package} is already installed." 177 | msgstr "${GREEN}[I]${RESET} Le paquet ${package} est déjà installé." 178 | 179 | #: src/cmd.sh:64 180 | #, sh-format 181 | msgid " ${RED}(might be long)${RESET}" 182 | msgstr " ${RED}(peut être long)${RESET}" 183 | 184 | #: src/cmd.sh:77 185 | #, sh-format 186 | msgid "${GREEN}[U]${RESET} Package ${package} is not installed." 187 | msgstr "${GREEN}[U]${RESET} Le paquet ${package} n'est pas installé." 188 | 189 | #: src/cmd.sh:104 190 | #, sh-format 191 | msgid "y" 192 | msgstr "o" 193 | 194 | #: src/cmd.sh:105 195 | #, sh-format 196 | msgid "n" 197 | msgstr "n" 198 | 199 | #: src/cmd.sh:137 200 | #, sh-format 201 | msgid "${RED}Error: installation failed${RESET}" 202 | msgstr "${RED}Erreur: l'installation a échoué${RESET}" 203 | 204 | #: src/de/detect.sh:31 205 | #, sh-format 206 | msgid "No supported DE detected (GNOME, KDE, XFCE). Skipping DE configuration." 207 | msgstr "" 208 | "Aucun environnement de bureau supporté détecté (GNOME, KDE, XFCE). " 209 | "Configuration de l'environnement de bureau ignorée." 210 | 211 | #: src/de/detect.sh:37 212 | #, sh-format 213 | msgid "Detected desktop environment:" 214 | msgstr "Environnement de bureau détecté :" 215 | 216 | #: src/de/gnome.sh:44 217 | #, sh-format 218 | msgid "Uninstall gnome-software" 219 | msgstr "Désinstaller gnome-software" 220 | 221 | #: src/de/gnome.sh:50 222 | #, sh-format 223 | msgid "Setting gtk theme to adw-gtk3" 224 | msgstr "Changement du thème vers adw-gtk3" 225 | 226 | #: src/de/gnome.sh:53 227 | #, sh-format 228 | msgid "Enabling numlock on startup" 229 | msgstr "Activation du verrouillage numérique au démarrage" 230 | 231 | #: src/de/gnome.sh:56 232 | #, sh-format 233 | msgid "Disable GDM rules to unlock Wayland" 234 | msgstr "Désactivation des règles GDM pour déverrouiller Wayland" 235 | 236 | #: src/de/gnome.sh:73 237 | #, sh-format 238 | msgid "Adding 'gnome-software' to IgnorePkg in /etc/pacman.conf" 239 | msgstr "Ajout de 'gnome-software' à IgnorePkg dans /etc/pacman.conf" 240 | 241 | #: src/de/kde.sh:32 242 | #, sh-format 243 | msgid "Uninstall discover" 244 | msgstr "Désinstaller discover" 245 | 246 | #: src/de/kde.sh:40 247 | #, sh-format 248 | msgid "Creating /etc/sddm.conf" 249 | msgstr "Création de /etc/sddm.conf" 250 | 251 | #: src/de/kde.sh:44 252 | #, sh-format 253 | msgid "Setting Breeze theme for SDDM" 254 | msgstr "Mise en place du thème Breeze pour SDDM" 255 | 256 | #: src/de/kde.sh:47 257 | #, sh-format 258 | msgid "Setting Numlock=on for SDDM" 259 | msgstr "Mise en place de Numlock=on pour SDDM" 260 | 261 | #: src/de/kde.sh:64 262 | #, sh-format 263 | msgid "Adding 'discover' to IgnorePkg in /etc/pacman.conf" 264 | msgstr "Ajout de 'discover' à IgnorePkg dans /etc/pacman.conf" 265 | 266 | #: src/de/xfce4.sh:49 267 | #, sh-format 268 | msgid "Updating user directories" 269 | msgstr "Mise à jour des dossiers utilisateurs" 270 | 271 | #: src/end.sh:10 272 | #, sh-format 273 | msgid "Done in ${GREEN}${duration}${RESET} seconds." 274 | msgstr "Terminé en ${GREEN}${duration}${RESET} secondes." 275 | 276 | #: src/end.sh:16 277 | #, sh-format 278 | msgid "Do you want to upload the log file to a pastebin?" 279 | msgstr "Voulez-vous téléverser le fichier journal vers un pastebin ?" 280 | 281 | #: src/end.sh:17 282 | #, sh-format 283 | msgid "Uploading log file to pastebin..." 284 | msgstr "Téléversement du fichier journal vers pastebin..." 285 | 286 | #: src/end.sh:23 287 | #, sh-format 288 | msgid "Log file uploaded to ${url}" 289 | msgstr "Fichier journal téléversé vers ${url}" 290 | 291 | #: src/end.sh:28 292 | #, sh-format 293 | msgid "${GREEN}Script completed successfully.${RESET}" 294 | msgstr "${GREEN}Script terminé avec succès.${RESET}" 295 | 296 | #: src/end.sh:33 297 | #, sh-format 298 | msgid "" 299 | "${GREEN}Script completed successfully, the system must restart${RESET}: " 300 | "Press ${GREEN}Enter${RESET} to restart or ${RED}Ctrl+C${RESET} to cancel." 301 | msgstr "" 302 | "${GREEN}Script terminé avec succès, le système doit redémarrer${RESET}: " 303 | "Appuyez sur ${GREEN}Entrée${RESET} pour redémarrer ou ${RED}Ctrl+C${RESET} " 304 | "pour annuler." 305 | 306 | #: src/end.sh:37 307 | #, sh-format 308 | msgid "${GREEN}Restarting in ${i} seconds...${RESET}" 309 | msgstr "${GREEN}Redémarrage dans ${i} secondes...${RESET}" 310 | 311 | #: src/init.sh:11 312 | #, sh-format 313 | msgid "Script Architect for Arch Linux" 314 | msgstr "Script Architect pour Arch Linux" 315 | 316 | #: src/init.sh:25 317 | #, sh-format 318 | msgid "${RED}This script will make changes to your system.${RESET}" 319 | msgstr "" 320 | "${RED}Ce script va effectuer des changements sur votre système.${RESET}" 321 | 322 | #: src/init.sh:26 323 | #, sh-format 324 | msgid "" 325 | "Some steps may take longer, depending on your Internet connection and CPU." 326 | msgstr "" 327 | "Quelques étapes prendront peut-être plus de temps, en fonction de votre " 328 | "connexion Internet et de votre processeur." 329 | 330 | #: src/init.sh:27 331 | #, sh-format 332 | msgid "" 333 | "Press ${GREEN}Enter${RESET} to continue, or ${RED}Ctrl+C${RESET} to cancel." 334 | msgstr "" 335 | "Appuyez sur ${GREEN}Entrée${RESET} pour continuer, ou ${RED}Ctrl+C${RESET} " 336 | "pour annuler." 337 | 338 | #: src/software/install.sh:91 339 | #, sh-format 340 | msgid "${GREEN}${software_type}${RESET} :" 341 | msgstr "${GREEN}${software_type}${RESET} :" 342 | 343 | #: src/software/install.sh:98 344 | #, sh-format 345 | msgid "" 346 | "${BLUE}::${RESET} Packages to install (e.g., 1 2 3, 1-3, all or press enter " 347 | "to skip): " 348 | msgstr "" 349 | "${BLUE}::${RESET} Paquets à installer (e.g., 1 2 3, 1-3, tous ou appuyez sur " 350 | "Entrée pour passer): " 351 | 352 | #: src/software/install.sh:102 353 | #, sh-format 354 | msgid "all" 355 | msgstr "tous" 356 | 357 | #: src/software/install.sh:130 358 | #, sh-format 359 | msgid "Browsers" 360 | msgstr "Navigateurs" 361 | 362 | #: src/software/install.sh:131 363 | #, sh-format 364 | msgid "System Software" 365 | msgstr "Applications Système" 366 | 367 | #: src/software/install.sh:132 368 | #, sh-format 369 | msgid "Desktop Apps" 370 | msgstr "Applications de bureau" 371 | 372 | #: src/software/install.sh:133 373 | #, sh-format 374 | msgid "Video Software" 375 | msgstr "Logiciels vidéo" 376 | 377 | #: src/software/install.sh:134 378 | #, sh-format 379 | msgid "Image Editors" 380 | msgstr "Editeurs d'image(s)" 381 | 382 | #: src/software/install.sh:135 383 | #, sh-format 384 | msgid "Gaming Software" 385 | msgstr "Applications de Gaming" 386 | 387 | #: src/software/install.sh:148 388 | #, sh-format 389 | msgid "Enable arch-update.timer" 390 | msgstr "Activation de arch-update.timer" 391 | 392 | #: src/software/install.sh:149 393 | #, sh-format 394 | msgid "Enable arch-update tray" 395 | msgstr "Activation du plateau arch-update" 396 | 397 | #: src/software/install.sh:154 398 | #, sh-format 399 | msgid "Add the current user to the plugdev group" 400 | msgstr "Ajout de l'utilisateur actuel au groupe plugdev" 401 | 402 | #: src/software/install.sh:159 403 | #, sh-format 404 | msgid "Add the current user to the vboxusers group" 405 | msgstr "Ajout de l'utilisateur actuel au groupe vboxusers" 406 | 407 | #: src/software/install.sh:160 408 | #, sh-format 409 | msgid "Enable vboxweb" 410 | msgstr "Activation de vboxweb" 411 | 412 | #: src/software/install.sh:165 413 | #, sh-format 414 | msgid "Add the current user to the libvirt group" 415 | msgstr "Ajout de l'utilisateur actuel au groupe libvirt" 416 | 417 | #: src/software/install.sh:166 418 | #, sh-format 419 | msgid "Add the current user to the kvm group" 420 | msgstr "Ajout de l'utilisateur actuel au groupe kvm" 421 | 422 | #: src/software/install.sh:167 423 | #, sh-format 424 | msgid "Enable libvirtd" 425 | msgstr "Activation de libvirtd" 426 | 427 | #: src/software/install.sh:193 428 | #, sh-format 429 | msgid "Add the current user to the gamemode group" 430 | msgstr "Ajout de l'utilisateur actuel au groupe gamemode" 431 | 432 | #: src/system/apparmor.sh:11 433 | #, sh-format 434 | msgid "Adding AppArmor parameters to GRUB configuration" 435 | msgstr "Ajout des paramètres AppArmor à la configuration de GRUB" 436 | 437 | #: src/system/apparmor.sh:18 438 | #, sh-format 439 | msgid "Adding AppArmor parameters to systemd-boot configuration" 440 | msgstr "Ajout des paramètres AppArmor à la configuration de systemd-boot" 441 | 442 | #: src/system/apparmor.sh:23 443 | #, sh-format 444 | msgid "No valid bootloader detected, skipping ..." 445 | msgstr "Aucun chargeur de démarrage valide détecté, ignoré ..." 446 | 447 | #: src/system/apparmor.sh:24 448 | #, sh-format 449 | msgid "No valid bootloader detected" 450 | msgstr "Aucun chargeur de démarrage valide détecté" 451 | 452 | #: src/system/apparmor.sh:31 453 | #, sh-format 454 | msgid "Updating GRUB configuration for EFI systems" 455 | msgstr "Mise à jour de la configuration de GRUB pour les systèmes EFI" 456 | 457 | #: src/system/apparmor.sh:34 458 | #, sh-format 459 | msgid "Updating GRUB configuration for BIOS systems" 460 | msgstr "Mise à jour de la configuration de GRUB pour les systèmes BIOS" 461 | 462 | #: src/system/apparmor.sh:37 463 | #, sh-format 464 | msgid "Installing AppArmor packages" 465 | msgstr "Installation des paquets AppArmor" 466 | 467 | #: src/system/apparmor.sh:40 468 | #, sh-format 469 | msgid "Enabling caching for AppArmor profiles" 470 | msgstr "Activation du cache des profiles AppArmor" 471 | 472 | #: src/system/apparmor.sh:43 473 | #, sh-format 474 | msgid "Enabling and starting AppArmor service" 475 | msgstr "Activation et démarrage du service AppArmor" 476 | 477 | #: src/system/apparmor.sh:48 478 | #, sh-format 479 | msgid "Type 'yes' to confirm you have read the above message:" 480 | msgstr "Tapez 'oui' pour confirmer que vous avez lu le message ci-dessus :" 481 | 482 | #: src/system/apparmor.sh:53 483 | #, sh-format 484 | msgid "Please read the message carefully and type 'yes' to confirm." 485 | msgstr "Veuillez lire attentivement le message et tapez 'oui' pour confirmer." 486 | 487 | #: src/system/apparmor.sh:57 488 | #, sh-format 489 | msgid "Skipping AppArmor installation due to invalid bootloader." 490 | msgstr "" 491 | "Installation d'AppArmor ignorée en raison d'un chargeur de démarrage " 492 | "invalide." 493 | 494 | #: src/system/apparmor.sh:58 495 | #, sh-format 496 | msgid "Skipping AppArmor installation" 497 | msgstr "Installation d'AppArmor ignorée" 498 | 499 | #: src/system/audio.sh:24 500 | #, sh-format 501 | msgid "Cleaning old sound server dependencies" 502 | msgstr "Nettoyage des dépendances de l'ancien serveur son" 503 | 504 | #: src/system/bootloader.sh:8 505 | #, sh-format 506 | msgid "Checking if GRUB is installed" 507 | msgstr "Vérification de la présence de GRUB" 508 | 509 | #: src/system/bootloader.sh:16 510 | #, sh-format 511 | msgid "Creating /etc/pacman.d/hooks" 512 | msgstr "Création de /etc/pacman.d/hooks" 513 | 514 | #: src/system/bootloader.sh:33 515 | #, sh-format 516 | msgid "Setting up GRUB hook" 517 | msgstr "Configuration du hook GRUB" 518 | 519 | #: src/system/bootloader.sh:38 520 | #, sh-format 521 | msgid "Enabling os-prober" 522 | msgstr "Activation de os-prober" 523 | 524 | #: src/system/bootloader.sh:39 525 | #, sh-format 526 | msgid "Running os-prober" 527 | msgstr "Exécution d'os-prober" 528 | 529 | #: src/system/bootloader.sh:40 530 | #, sh-format 531 | msgid "Updating GRUB" 532 | msgstr "Mise à jour de GRUB" 533 | 534 | #: src/system/config/aur.sh:6 535 | #, sh-format 536 | msgid "Installing git" 537 | msgstr "Installation de git" 538 | 539 | #: src/system/config/aur.sh:18 540 | #, sh-format 541 | msgid "Which AUR helper do you want to install? (yay/paru): " 542 | msgstr "Quel gestionnaire AUR souhaitez-vous installer ? (yay/paru) : " 543 | 544 | #: src/system/config/aur.sh:22 src/system/drivers/gpu.sh:17 545 | #, sh-format 546 | msgid "${GREEN}You chose ${choice}${RESET}" 547 | msgstr "${GREEN}Vous avez choisi ${choice}${RESET}" 548 | 549 | #: src/system/config/aur.sh:39 550 | #, sh-format 551 | msgid "Allowing pacman without password temporarily" 552 | msgstr "Autorisation temporaire de pacman sans mot de passe" 553 | 554 | #: src/system/config/aur.sh:46 555 | #, sh-format 556 | msgid "Removing temporary sudoers rule" 557 | msgstr "Suppression de la règle temporaire sudoers" 558 | 559 | #: src/system/config/aur.sh:54 560 | #, sh-format 561 | msgid "Auto-updating Git-based AUR packages" 562 | msgstr "Mise à jour automatique des paquets AUR basés sur Git" 563 | 564 | #: src/system/config/aur.sh:56 565 | #, sh-format 566 | msgid "Enabling SudoLoop option for yay" 567 | msgstr "Activation de l'option SudoLoop de yay" 568 | 569 | #: src/system/config/aur.sh:62 570 | #, sh-format 571 | msgid "Enabling BottomUp option for paru" 572 | msgstr "Activation de l'option BottomUp de paru" 573 | 574 | #: src/system/config/aur.sh:64 575 | #, sh-format 576 | msgid "Enabling SudoLoop option for paru" 577 | msgstr "Activation de l'option SudoLoop de paru" 578 | 579 | #: src/system/config/aur.sh:66 580 | #, sh-format 581 | msgid "Enabling CombinedUpgrade option for paru" 582 | msgstr "Activation de l'option CombinedUpgrade de paru" 583 | 584 | #: src/system/config/aur.sh:68 585 | #, sh-format 586 | msgid "Enabling UpgradeMenu option for paru" 587 | msgstr "Activation de l'option UpgradeMenu de paru" 588 | 589 | #: src/system/config/aur.sh:70 590 | #, sh-format 591 | msgid "Enabling NewsOnUpgrade option for paru" 592 | msgstr "Activation de l'option NewsOnUpgrade de paru" 593 | 594 | #: src/system/config/aur.sh:74 595 | #, sh-format 596 | msgid "Enabling SkipReview option for paru" 597 | msgstr "Activation de l'option SkipReview de paru" 598 | 599 | #: src/system/config/pacman.sh:7 600 | #, sh-format 601 | msgid "Enabling color in pacman" 602 | msgstr "Activation de la couleur dans pacman" 603 | 604 | #: src/system/config/pacman.sh:10 605 | #, sh-format 606 | msgid "Enabling verbose package lists in pacman" 607 | msgstr "Activation des listes de paquets détaillées dans pacman" 608 | 609 | #: src/system/config/pacman.sh:13 610 | #, sh-format 611 | msgid "Enabling parallel downloads and ILoveCandy in pacman" 612 | msgstr "" 613 | "Activation des téléchargements en parallèle et du ILoveCandy dans pacman" 614 | 615 | #: src/system/config/pacman.sh:16 616 | #, sh-format 617 | msgid "Enabling multilib repository" 618 | msgstr "Activation du dépôt multilib" 619 | 620 | #: src/system/config/pacman.sh:19 621 | #, sh-format 622 | msgid "Enabling multithread compilation" 623 | msgstr "Activation de la compilation multithread" 624 | 625 | #: src/system/config/pacman.sh:22 626 | #, sh-format 627 | msgid "Updating full system ${RED}(might be long)${RESET}" 628 | msgstr "Mise à jour du système complet ${RED}(peut être long)${RESET}" 629 | 630 | #: src/system/config/pacman.sh:25 631 | #, sh-format 632 | msgid "Installing pacman-contrib" 633 | msgstr "Installation de pacman-contrib" 634 | 635 | #: src/system/config/pacman.sh:28 636 | #, sh-format 637 | msgid "Enabling paccache timer" 638 | msgstr "Activation du timer paccache" 639 | 640 | #: src/system/config/pacman.sh:32 641 | #, sh-format 642 | msgid "Removing existing update-mirrors script" 643 | msgstr "Suppression du script update-mirrors existant" 644 | 645 | #: src/system/config/pacman.sh:44 646 | #, sh-format 647 | msgid "Creating update-mirrors script" 648 | msgstr "Création du script update-mirrors" 649 | 650 | #: src/system/config/pacman.sh:47 651 | #, sh-format 652 | msgid "Making update-mirrors script executable" 653 | msgstr "Rendre le script update-mirrors exécutable" 654 | 655 | #: src/system/config/pacman.sh:57 656 | #, sh-format 657 | msgid "Running update-mirrors" 658 | msgstr "Exécution de update-mirrors" 659 | 660 | #: src/system/drivers/amd.sh:18 661 | #, sh-format 662 | msgid "Would you like to install ROCM (${RED}say No if unsure${RESET})" 663 | msgstr "" 664 | "Souhaitez-vous installer ROCM (${RED}dites Non si vous n'êtes pas " 665 | "sûr${RESET})" 666 | 667 | #: src/system/drivers/bluetooth.sh:8 668 | #, sh-format 669 | msgid "Do you want to use Bluetooth?" 670 | msgstr "Voulez-vous utiliser le bluetooth ?" 671 | 672 | #: src/system/drivers/bluetooth.sh:20 673 | #, sh-format 674 | msgid "Enabling bluetooth service" 675 | msgstr "Activation du service bluetooth" 676 | 677 | #: src/system/drivers/gamepad.sh:8 678 | #, sh-format 679 | msgid "" 680 | "Would you want to install xpadneo? (Can improve Xbox gamepad support. ${RED}" 681 | "Say No if unsure.${RESET})" 682 | msgstr "" 683 | "Voulez-vous installer xpadneo ? (Peut améliorer le support des manettes " 684 | "xbox, ${RED}dites Non si vous n'êtes pas sûr${RESET})" 685 | 686 | #: src/system/drivers/gamepad.sh:12 687 | #, sh-format 688 | msgid "" 689 | "Would you want to install Xone? (Can improve Xbox gamepad support with a USB " 690 | "wireless dongle. ${RED}Say No if unsure.${RESET})" 691 | msgstr "" 692 | "Voulez-vous installer Xone ? (Peut améliorer le support des manettes xbox " 693 | "quand elles utilisent un dongle usb sans fil, ${RED}dites Non si vous n'êtes " 694 | "pas sûr${RESET})" 695 | 696 | #: src/system/drivers/gamepad.sh:20 697 | #, sh-format 698 | msgid "Do you want to use PS5 controllers?" 699 | msgstr "Voulez-vous utiliser des manettes PS5 ?" 700 | 701 | #: src/system/drivers/gpu.sh:10 src/system/drivers/gpu.sh:13 702 | #, sh-format 703 | msgid "What is your graphics card type ?" 704 | msgstr "Quel est le type de votre carte graphique ?" 705 | 706 | #: src/system/drivers/nvidia.sh:10 707 | #, sh-format 708 | msgid "Removing existing nvidia.conf file" 709 | msgstr "Suppression du fichier nvidia.conf existant" 710 | 711 | #: src/system/drivers/nvidia.sh:41 712 | #, sh-format 713 | msgid "Setting advanced NVIDIA module options" 714 | msgstr "Configuration des options avancées du module NVIDIA" 715 | 716 | #: src/system/drivers/nvidia.sh:46 717 | #, sh-format 718 | msgid "Adding NVIDIA modules to mkinitcpio.conf" 719 | msgstr "Ajout des modules NVIDIA à mkinitcpio.conf" 720 | 721 | #: src/system/drivers/nvidia.sh:48 722 | #, sh-format 723 | msgid "NVIDIA modules already present in mkinitcpio.conf" 724 | msgstr "Les modules NVIDIA sont déjà présents dans mkinitcpio.conf" 725 | 726 | #: src/system/drivers/nvidia.sh:58 727 | #, sh-format 728 | msgid "Removing existing NVIDIA udev rule" 729 | msgstr "Suppression de la règle udev NVIDIA existante" 730 | 731 | #: src/system/drivers/nvidia.sh:73 732 | #, sh-format 733 | msgid "Creating NVIDIA udev rule for runtime power management" 734 | msgstr "" 735 | "Création de la règle udev NVIDIA pour la gestion de l'alimentation en temps " 736 | "réel" 737 | 738 | #: src/system/drivers/nvidia.sh:83 739 | #, sh-format 740 | msgid "Creating pacman hook directory" 741 | msgstr "Création du répertoire de hooks pacman" 742 | 743 | #: src/system/drivers/nvidia.sh:88 744 | #, sh-format 745 | msgid "Removing existing Nvidia pacman hook file" 746 | msgstr "Suppression du fichier de hook pacman Nvidia existant" 747 | 748 | #: src/system/drivers/nvidia.sh:116 749 | #, sh-format 750 | msgid "Creating pacman hook for NVIDIA module regeneration" 751 | msgstr "Création du hook pacman pour la régénération du module NVIDIA" 752 | 753 | #: src/system/drivers/nvidia.sh:121 754 | #, sh-format 755 | msgid "Do you have an Intel/Nvidia Laptop ?" 756 | msgstr "Avez-vous un portable Intel/Nvidia ?" 757 | 758 | #: src/system/drivers/nvidia.sh:147 759 | #, sh-format 760 | msgid "Clean old nvidia drivers dependencies" 761 | msgstr "Nettoyage des dépendances des anciens pilotes NVIDIA" 762 | 763 | #: src/system/drivers/nvidia.sh:178 764 | #, sh-format 765 | msgid "Enabling NVIDIA services" 766 | msgstr "Activation des services NVIDIA" 767 | 768 | #: src/system/drivers/printer.sh:8 769 | #, sh-format 770 | msgid "Do you want to use a printer?" 771 | msgstr "Voulez-vous utiliser une imprimante ?" 772 | 773 | #: src/system/drivers/printer.sh:26 774 | #, sh-format 775 | msgid "Do you want to use an EPSON printer?" 776 | msgstr "Voulez-vous utiliser une imprimante EPSON ?" 777 | 778 | #: src/system/drivers/printer.sh:33 779 | #, sh-format 780 | msgid "Do you want to use a HP printer?" 781 | msgstr "Voulez-vous utiliser une imprimante HP ?" 782 | 783 | #: src/system/drivers/printer.sh:44 784 | #, sh-format 785 | msgid "Enabling avahi-daemon service" 786 | msgstr "Activation du service avahi-daemon" 787 | 788 | #: src/system/drivers/printer.sh:45 789 | #, sh-format 790 | msgid "Enabling cups service" 791 | msgstr "Activation du service cups" 792 | 793 | #: src/system/drivers/vm.sh:29 794 | #, sh-format 795 | msgid "activation of vboxservice" 796 | msgstr "Activation du vboxservice" 797 | 798 | #: src/system/drivers/vm.sh:32 799 | #, sh-format 800 | msgid "activation of VBoxClient-all" 801 | msgstr "Activation de VBoxClient-all" 802 | 803 | #: src/system/firewall.sh:8 804 | #, sh-format 805 | msgid "" 806 | "Would you like to install a firewall? /!\\ WARNING: This script can install " 807 | "and enable either Firewalld or UFW. The default configuration may block " 808 | "local network devices such as printers or block some software functions." 809 | msgstr "" 810 | "Voulez-vous installer un pare-feu ? /!\\ ATTENTION : Ce script peut " 811 | "installer et activer soit Firewalld, soit UFW. La configuration par défaut " 812 | "peut bloquer les appareils du réseau local comme les imprimantes ou bloquer " 813 | "certaines fonctions logicielles." 814 | 815 | #: src/system/grub-btrfs.sh:7 816 | #, sh-format 817 | msgid "" 818 | "Do you want to install and setup grub-btrfs and timeshift ${RED}say No if " 819 | "unsure${RESET} /!\\ ?" 820 | msgstr "" 821 | "Voulez-vous installer et configurer grub-btrfs et timeshift ${RED}dites Non " 822 | "si vous n'êtes pas sûr${RESET} /!\\ ?" 823 | 824 | #: src/system/grub-btrfs.sh:13 825 | #, sh-format 826 | msgid "Enable cronie" 827 | msgstr "Activation de cronie" 828 | 829 | #: src/system/grub-btrfs.sh:16 830 | #, sh-format 831 | msgid "Enable grub-btrfsd" 832 | msgstr "Activation de grub-btrfsd" 833 | 834 | #: src/system/grub-btrfs.sh:19 835 | #, sh-format 836 | msgid "setup grub-btrfsd for timeshift" 837 | msgstr "Configuration de grub-btrfsd pour timeshift" 838 | 839 | #: src/system/internet.sh:11 840 | #, sh-format 841 | msgid "${RED}Error: No Internet connection${RESET}" 842 | msgstr "${RED}Erreur: Pas de connexion Internet${RESET}" 843 | 844 | #: src/system/kernel.sh:22 845 | #, sh-format 846 | msgid "Removing existing sysctl performance tweaks" 847 | msgstr "Suppression des optimisations sysctl existantes" 848 | 849 | #: src/system/kernel.sh:85 850 | #, sh-format 851 | msgid "Applying sysctl memory and kernel performance tweaks" 852 | msgstr "Application des optimisations sysctl de la mémoire et du noyau" 853 | 854 | #: src/system/kernel.sh:88 855 | #, sh-format 856 | msgid "Reloading sysctl parameters" 857 | msgstr "Rechargement des paramètres sysctl" 858 | 859 | #: src/system/shell.sh:52 860 | #, sh-format 861 | msgid "What is your default shell? (bash/zsh/fish): " 862 | msgstr "" 863 | 864 | #: src/system/shell.sh:72 865 | #, sh-format 866 | msgid "Switching default shell to zsh..." 867 | msgstr "" 868 | 869 | #: src/system/shell.sh:78 870 | #, sh-format 871 | msgid "Do you want to install oh-my-zsh?" 872 | msgstr "" 873 | 874 | #: src/system/shell.sh:79 875 | #, sh-format 876 | msgid "Installing oh-my-zsh..." 877 | msgstr "" 878 | 879 | #: src/system/shell.sh:92 880 | #, sh-format 881 | msgid "Switching default shell to fish..." 882 | msgstr "" 883 | 884 | #: src/system/shell.sh:107 885 | #, sh-format 886 | msgid "Shell configuration complete!" 887 | msgstr "" 888 | 889 | #, sh-format 890 | #~ msgid "Apparmor installation" 891 | #~ msgstr "Installation d'AppArmor" 892 | 893 | #, sh-format 894 | #~ msgid "What is your default shell ? (bash/zsh/fish) : " 895 | #~ msgstr "Quel est votre shell par défaut ? (bash/zsh/fish) : " 896 | 897 | #, sh-format 898 | #~ msgid "Setting default shell to zsh..." 899 | #~ msgstr "Changement du shell par défaut en zsh..." 900 | 901 | #, sh-format 902 | #~ msgid "" 903 | #~ "Do you want to install oh-my-zsh ? This will install the default oh-my-" 904 | #~ "zsh's .zshrc configuration" 905 | #~ msgstr "" 906 | #~ "Voulez-vous installer oh-my-zsh ? Cela installera la configuration .zshrc " 907 | #~ "par défaut de oh-my-zsh" 908 | 909 | #, sh-format 910 | #~ msgid "You chose to install oh-my-zsh" 911 | #~ msgstr "Vous avez choisi d'installer oh-my-zsh" 912 | 913 | #, sh-format 914 | #~ msgid "Setting default shell to fish..." 915 | #~ msgstr "Changement du shell par défaut vers fish..." 916 | 917 | #, sh-format 918 | #~ msgid "Invalid choice" 919 | #~ msgstr "Choix invalide" 920 | --------------------------------------------------------------------------------