├── 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 | [](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 | [](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 |
--------------------------------------------------------------------------------