Minor improvements to install-stormux. Added xdotool dependency for I38.

This commit is contained in:
Storm Dragon
2025-12-19 02:56:48 -05:00
parent 3d62262849
commit d8056278d2

View File

@@ -256,15 +256,27 @@ partition_disk_uefi_separate_home() {
local disk="$1"
log_info "Creating UEFI separate home partition layout on $disk"
# Get disk size in GB for calculating root partition size
local diskSizeGB
diskSizeGB=$(lsblk -dno SIZE "$disk" | grep -oE '[0-9]+' | head -1)
# Get disk size in MiB for calculating root partition size
local diskSizeMiB
diskSizeMiB=$(lsblk -dno SIZE -b "$disk" | awk '{print int($1/1024/1024)}')
# Calculate root partition size (30GB or 40% of disk, whichever is larger)
local rootSizeGB=30
local fortyPercent=$((diskSizeGB * 40 / 100))
if [[ $fortyPercent -gt $rootSizeGB ]]; then
rootSizeGB=$fortyPercent
# Calculate root partition size (30GiB or 40% of disk, whichever is larger)
local rootSizeMiB=$((30 * 1024))
local fortyPercentMiB=$((diskSizeMiB * 40 / 100))
if [[ $fortyPercentMiB -gt $rootSizeMiB ]]; then
rootSizeMiB=$fortyPercentMiB
fi
# Ensure space for EFI (1GiB) and a minimal home partition (1GiB)
local efiEndMiB=1025
local minHomeMiB=1024
local maxRootMiB=$((diskSizeMiB - efiEndMiB - minHomeMiB))
if [[ $maxRootMiB -lt 1024 ]]; then
log_error "Disk too small for separate /home partition layout"
return 1
fi
if [[ $rootSizeMiB -gt $maxRootMiB ]]; then
rootSizeMiB=$maxRootMiB
fi
# Wipe existing partition table
@@ -278,7 +290,7 @@ partition_disk_uefi_separate_home() {
parted -s "$disk" set 1 esp on
# Create root partition
local rootEndMiB=$((1025 + rootSizeGB * 1024))
local rootEndMiB=$((efiEndMiB + rootSizeMiB))
parted -s "$disk" mkpart primary ext4 1025MiB "${rootEndMiB}MiB"
# Create home partition (rest of disk)
@@ -344,15 +356,26 @@ partition_disk_bios_separate_home() {
local disk="$1"
log_info "Creating BIOS separate home partition layout on $disk"
# Get disk size in GB
local diskSizeGB
diskSizeGB=$(lsblk -dno SIZE "$disk" | grep -oE '[0-9]+' | head -1)
# Get disk size in MiB
local diskSizeMiB
diskSizeMiB=$(lsblk -dno SIZE -b "$disk" | awk '{print int($1/1024/1024)}')
# Calculate root partition size (30GB or 40% of disk, whichever is larger)
local rootSizeGB=30
local fortyPercent=$((diskSizeGB * 40 / 100))
if [[ $fortyPercent -gt $rootSizeGB ]]; then
rootSizeGB=$fortyPercent
# Calculate root partition size (30GiB or 40% of disk, whichever is larger)
local rootSizeMiB=$((30 * 1024))
local fortyPercentMiB=$((diskSizeMiB * 40 / 100))
if [[ $fortyPercentMiB -gt $rootSizeMiB ]]; then
rootSizeMiB=$fortyPercentMiB
fi
# Ensure space for a minimal home partition (1GiB)
local minHomeMiB=1024
local maxRootMiB=$((diskSizeMiB - 1 - minHomeMiB))
if [[ $maxRootMiB -lt 1024 ]]; then
log_error "Disk too small for separate /home partition layout"
return 1
fi
if [[ $rootSizeMiB -gt $maxRootMiB ]]; then
rootSizeMiB=$maxRootMiB
fi
# Wipe existing partition table
@@ -362,7 +385,7 @@ partition_disk_bios_separate_home() {
parted -s "$disk" mklabel msdos
# Create root partition
local rootEndMiB=$((1 + rootSizeGB * 1024))
local rootEndMiB=$((1 + rootSizeMiB))
parted -s "$disk" mkpart primary ext4 1MiB "${rootEndMiB}MiB"
parted -s "$disk" set 1 boot on
@@ -416,25 +439,25 @@ partition_disks() {
case "$partitionLayout" in
single)
if [[ "$bootMode" == "uefi" ]]; then
partition_disk_uefi_single "$targetDisk"
partition_disk_uefi_single "$targetDisk" || return 1
else
partition_disk_bios_single "$targetDisk"
partition_disk_bios_single "$targetDisk" || return 1
fi
;;
separate_home)
if [[ "$bootMode" == "uefi" ]]; then
partition_disk_uefi_separate_home "$targetDisk"
partition_disk_uefi_separate_home "$targetDisk" || return 1
else
partition_disk_bios_separate_home "$targetDisk"
partition_disk_bios_separate_home "$targetDisk" || return 1
fi
;;
separate_disk)
if [[ "$bootMode" == "uefi" ]]; then
partition_disk_uefi_root_only "$targetDisk"
partition_disk_uefi_home_only "$homeDisk"
partition_disk_uefi_root_only "$targetDisk" || return 1
partition_disk_uefi_home_only "$homeDisk" || return 1
else
partition_disk_bios_root_only "$targetDisk"
partition_disk_bios_home_only "$homeDisk"
partition_disk_bios_root_only "$targetDisk" || return 1
partition_disk_bios_home_only "$homeDisk" || return 1
fi
;;
esac
@@ -861,7 +884,7 @@ install_base_system() {
allPackages+=(python-i3ipc python-wxpython sox yad)
allPackages+=(lxsession magic-wormhole pcmanfm)
allPackages+=(python-gobject python-pillow python-pytesseract scrot tesseract)
allPackages+=(tesseract-data-eng udiskie xorg-setxkbmap)
allPackages+=(tesseract-data-eng udiskie xorg-setxkbmap xdotool)
# Add Stormux-specific i3 packages
stormuxPackages+=(xlibre-xserver xlibre-input-libinput nodm-dgw brave-bin)
;;
@@ -1221,6 +1244,12 @@ if [[ "${desktopEnvironment}" == "i3" ]]; then
echo "Configuring I38 for accessibility..."
cd /home/\$firstUser/git/I38 || exit 1
# Ensure xdotool is available for I38 setup
if ! command -v xdotool >/dev/null 2>&1; then
echo "Installing xdotool for I38..."
pacman -Sy --noconfirm --needed xdotool 2>/dev/null || true
fi
# Run I38 setup scripts as the user
# -x generates xinitrc and xprofile
# Main script generates i3 config with accessibility features