mirror of
https://github.com/archr-linux/Arch-R.git
synced 2026-03-31 14:41:55 -07:00
System daemons: hotkeys (volume/brightness), automount, bluetooth agent, memory manager, sleep/suspend, USB gadget mode, save-config persistence. Boot splash: initramfs SVG renderer (fbsplash + svg_parser) for 0.7s splash. Panel tools: generate-panel-dtbos.sh rewrite, convert-panel.py for ROCKNIX panel data extraction, archr-dtbo.py for runtime overlay management. Input: archr-gptokeyb.c gamepad-to-keyboard mapper via uinput. Launch wrappers: emulationstation.sh and retroarch-launch.sh updated for KMS/DRM + Mesa 26 Panfrost environment. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
75 lines
1.9 KiB
Bash
75 lines
1.9 KiB
Bash
#!/bin/bash
|
|
# Arch R — Memory Manager
|
|
# Configures ZRAM swap and manages memory for optimal gaming performance.
|
|
#
|
|
# Usage:
|
|
# archr-memory-manager setup — Configure and enable ZRAM swap
|
|
# archr-memory-manager stop — Disable ZRAM swap
|
|
# archr-memory-manager status — Show memory/swap status
|
|
|
|
ZRAM_SIZE_MB=128
|
|
ZRAM_ALGO="lzo"
|
|
|
|
log() { logger -t archr-mem "$1"; }
|
|
|
|
setup_swap() {
|
|
# Skip if already active
|
|
if swapon --show=NAME --noheadings | grep -q zram; then
|
|
log "ZRAM swap already active"
|
|
return 0
|
|
fi
|
|
|
|
# Load zram module
|
|
modprobe zram num_devices=1 2>/dev/null
|
|
|
|
# Wait for device
|
|
for i in $(seq 1 10); do
|
|
[ -e /sys/block/zram0 ] && break
|
|
sleep 0.1
|
|
done
|
|
|
|
if [ ! -e /sys/block/zram0 ]; then
|
|
log "ERROR: zram0 device not found"
|
|
return 1
|
|
fi
|
|
|
|
# Configure
|
|
echo "$ZRAM_ALGO" > /sys/block/zram0/comp_algorithm
|
|
echo "$((ZRAM_SIZE_MB * 1024 * 1024))" > /sys/block/zram0/disksize
|
|
|
|
# Format and enable
|
|
mkswap /dev/zram0 >/dev/null 2>&1
|
|
swapon -p 100 /dev/zram0
|
|
|
|
log "ZRAM swap enabled: ${ZRAM_SIZE_MB}MB ($ZRAM_ALGO)"
|
|
}
|
|
|
|
stop_swap() {
|
|
swapoff /dev/zram0 2>/dev/null
|
|
echo 1 > /sys/block/zram0/reset 2>/dev/null
|
|
log "ZRAM swap disabled"
|
|
}
|
|
|
|
show_status() {
|
|
echo "=== Memory Status ==="
|
|
free -h
|
|
echo ""
|
|
echo "=== Swap Devices ==="
|
|
swapon --show 2>/dev/null || echo "No swap active"
|
|
echo ""
|
|
if [ -e /sys/block/zram0 ]; then
|
|
echo "=== ZRAM ==="
|
|
echo "Algorithm: $(cat /sys/block/zram0/comp_algorithm 2>/dev/null)"
|
|
echo "Disk size: $(cat /sys/block/zram0/disksize 2>/dev/null) bytes"
|
|
echo "Compressed: $(cat /sys/block/zram0/mm_stat 2>/dev/null | awk '{print $2}') bytes"
|
|
fi
|
|
}
|
|
|
|
case "${1:-setup}" in
|
|
setup) setup_swap ;;
|
|
stop) stop_swap ;;
|
|
reload) stop_swap; setup_swap ;;
|
|
status) show_status ;;
|
|
*) echo "Usage: archr-memory-manager {setup|stop|reload|status}" ;;
|
|
esac
|