-
Notifications
You must be signed in to change notification settings - Fork 0
/
snap-to-flatpak.sh
144 lines (120 loc) · 4.54 KB
/
snap-to-flatpak.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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
#!/bin/bash
# Check if script is run as sudo user
if [[ $EUID -ne 0 ]]; then
echo "This script must be run as a sudo user"
exit 1
fi
# Function to display step messages
show_step() {
echo "============================================================================="
echo "$1..."
echo "============================================================================="
}
# Function to show a progress bar
show_progress() {
local current="$1"
local total="$2"
local percentage=$((current * 100 / total))
printf "\r[%-50s] %d%%" "$(printf '=' "$percentage")" "$percentage"
}
# Show introduction
echo "============================================================================="
echo "This script will perform the following actions :"
echo "1. List current snap packages."
echo "2. Remove snap packages until none are left."
echo "3. Remove snapd package permanently."
echo "4. Prevent the downloading of snap packages by creating a preference file."
echo "5. Install GNOME Software."
echo "6. Install Firefox from Mozilla's official repositories."
echo "7. Enable auto updates of Firefox from Mozilla repositories."
echo "8. Add support for Flatpak apps."
echo "============================================================================="
# Ask the user for confirmation, whether to run the script or not?
while true; do
read -p "Do you want to proceed? (yes/no): " choice
case "$choice" in
[Yy]|[Yy][Ee][Ss])
echo "Continuing with the script..."
break
;;
[Nn]|[Nn][Oo])
echo "Exiting script."
exit
;;
*)
echo "Invalid choice. Please enter 'yes' or 'no'."
;;
esac
done
# Loop to remove all snap packages
while [ "$(snap list | wc -l)" -gt 1 ]; do
# Step 1: List current snap packages
show_step "Listing current snap packages"
snap list --all
# Step 2: Remove all snap packages
show_step "Removing all snap packages"
snap_list=$(snap list | awk '{if(NR>1) print $1}')
total_snaps=$(echo "$snap_list" | wc -l)
current_snap=0
for snap in $snap_list; do
current_snap=$((current_snap + 1))
sudo snap remove --purge $snap
show_progress $current_snap $total_snaps
echo " Snap '$snap' uninstalled."
snap list --all
done
echo # Print newline after progress bar
# Step 3: Remove snapd package permanently
show_step "Removing snapd package permanently"
sudo apt purge snapd -y
done
echo "'Ahh... finally, snapd has been removed completely from the system'"
sleep 2
# Step 4: Prevent snap package downloads
show_step "Preventing snap package downloads"
sudo tee /etc/apt/preferences.d/nosnap.pref > /dev/null <<EOF
Package: snapd
Pin: release a=*
Pin-Priority: -10
EOF
# Step 5: Update apt repositories
echo "Updating system repositories"
sudo apt update
# Step 6: Install GNOME Software
show_step "Installing GNOME Software Centre"
sudo apt install --install-suggests gnome-software -y
# Step 7: Install Firefox from Mozilla repositories
show_step "Installing Firefox from Mozilla repositories"
# Step 7.1: Adding Mozilla repositories
sudo add-apt-repository ppa:mozillateam/ppa
# Step 7.2: Update apt repositories
sudo apt update
# Step 7.3: Install Firefox
sudo apt install -t 'o=LP-PPA-mozillateam' firefox -y
# Step 7.3: Enable automatic updates
echo 'Unattended-Upgrade::Allowed-Origins:: "LP-PPA-mozillateam:${distro_codename}";' | sudo tee /etc/apt/apt.conf.d/51unattended-upgrades-firefox
# Step 8: Creating preferencee file for Firefox updates from Mozilla repositories
show_step "Setting up Firefox updates from Mozilla repositories"
sudo tee /etc/apt/preferences.d/mozillateamppa > /dev/null <<EOF
Package: firefox*
Pin: release o=LP-PPA-mozillateam
Pin-Priority: 501
EOF
# Step 9: Update apt repositories
sudo apt update
# Step 10: Installing Flatpak support
show_step "Adding support for Flatpak apps"
echo "Installing required packages"
sudo apt install flatpak -y
# Step 10.1: Install the Software Center plugin
sudo apt install gnome-software-plugin-flatpak -y
# Step 10.2: Add the Flathub repository
flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
# Step 10.3: Update the flatpak
flatpak update
sleep 5
# Final message
echo "============================================================================="
echo "Script completed successfully!"
echo "You can now use GNOME Software to manage applications and install Flatpak apps."
echo "============================================================================="