This repository has been archived by the owner on Nov 6, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathswap_resizer.sh
executable file
·68 lines (66 loc) · 4.65 KB
/
swap_resizer.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#!/bin/bash
# Author: CryoByte33
# I am in no way responsible to damage done to any device this
# is executed on, all liability lies with the runner.
hasPass=$(passwd -S "$USER" | awk -F " " '{print $2}')
if [[ ! $hasPass == "P" ]]; then
zenity --error --title="Password Error" --text="Password is not set, please set one in the terminal with the <b>passwd</b> command, then run this again." --width=400 2> /dev/null
else
PASSWD="$(zenity --password --title="Enter Password" --text="Enter Deck User Password (not Steam account!)" 2>/dev/null)"
echo "$PASSWD" | sudo -v -S
ans=$?
if [[ $ans == 1 ]]; then
zenity --error --title="Password Error" --text="Incorrect password provided, please run this command again and provide the correct password." --width=400 2> /dev/null
else
if zenity --question --title="Disclaimer" --text="This script was made by CryoByte33 to resize the swapfile on a Steam Deck.\n\n<b>Disclaimer: I am in no way responsible to damage done to any device this is executed on, all liability lies with the runner.</b>\n\nDo you accept these terms?" --width=600 2> /dev/null; then
CURRENT_SWAP_SIZE=$(ls -l /home/swapfile | awk '{print $5}')
CURRENT_VM_SWAPPINESS=$(sysctl vm.swappiness | awk '{print $3}')
if zenity --question --title="Change Swap Size?" --text="Do you want to change the swap file size?" --width=300 2> /dev/null; then
AVAILABLE=$(df --output="avail" -lh --sync /home | grep -v "Avail" | sed -e 's/^[ \t]*//')
MACHINE_AVAILABLE=$(( $(df --output="avail" -l --sync /home | grep -v "Avail" | sed -e 's/^[ \t]*//') * 1024 ))
SIZE=$(zenity --list --radiolist --text "You have $AVAILABLE space available, what size would you like the swap file (in GB)?" --hide-header --column "Selected" --column "Size" TRUE "1" FALSE "2" FALSE "4" FALSE "8" FALSE "12" FALSE "16" FALSE "32" --height=400 2> /dev/null)
MACHINE_SIZE=$(( $SIZE * 1024 * 1024 ))
TOTAL_AVAILABLE=$(( $MACHINE_AVAILABLE + $CURRENT_SWAP_SIZE ))
echo "Debugging Information:"
echo "----------------------"
echo "Bytes Available: $MACHINE_AVAILABLE"
echo "Chosen Size: $MACHINE_SIZE"
echo "Current Swap Size in Bytes: $CURRENT_SWAP_SIZE"
echo "Total Size Available: $TOTAL_AVAILABLE"
if [ "$MACHINE_SIZE" -lt $TOTAL_AVAILABLE ]; then
(
echo 0
echo "# Disabling swap..."
sudo swapoff -a
echo 25
echo "# Creating new $SIZE GB swapfile (be patient, this can take between 10 seconds and 30 minutes)..."
sudo dd if=/dev/zero of=/home/swapfile bs=1G count=$SIZE status=none
echo 50
echo "# Setting permissions on swapfile..."
sudo chmod 0600 /home/swapfile
echo 75
echo "# Initializing new swapfile..."
sudo mkswap /home/swapfile
sudo swapon /home/swapfile
echo 100
echo "# Process completed! You can verify the file is resized by doing 'ls -lash /home/swapfile' or using 'swapon -s'."
) | zenity --title "Resizing Swap File" --progress --no-cancel --width=800 2> /dev/null
else
zenity --error --title="Invalid Size" --text="You selected a size greater than the space you have available, cannot proceed." --width=500 2> /dev/null
fi
fi
# Thank you to protosam for the idea and some of the code here.
if zenity --question --title="Change Swappiness?" --text="Would you like to change swappiness?\n\nCurrent value: $CURRENT_VM_SWAPPINESS\nRecommended: 1" --width=300 2> /dev/null; then
SWAPPINESS_ANSWER=$(zenity --list --title "Swappiness Value" --text "What value would you like to use for swappiness?" --column="vm.swappiness" "100" "50" "30" "1" --width=100 --height=300 2> /dev/null)
sudo sysctl -w "vm.swappiness=$SWAPPINESS_ANSWER"
if [ "$SWAPPINESS_ANSWER" -eq "100" ]; then
sudo rm /etc/sysctl.d/zzz-custom-swappiness.conf
else
echo "vm.swappiness=$SWAPPINESS_ANSWER" | sudo tee /etc/sysctl.d/zzz-custom-swappiness.conf
fi
fi
else
zenity --error --title="Terms Denied" --text="Terms were denied, cannot proceed." --width=300 2> /dev/null
fi
fi
fi