2026-05-21 20:38:00 +02:00
|
|
|
|
#!/bin/bash
|
2026-05-23 23:32:01 +02:00
|
|
|
|
# Function for Flatpak apps
|
2026-05-21 20:38:00 +02:00
|
|
|
|
close_flatpak() {
|
|
|
|
|
|
local app="$1"
|
|
|
|
|
|
flatpak kill "$app"
|
|
|
|
|
|
for i in $(seq 1 5); do
|
|
|
|
|
|
sleep 1
|
|
|
|
|
|
if ! pgrep -f "$app" > /dev/null; then
|
|
|
|
|
|
echo "$app closed (attempt $i)"
|
|
|
|
|
|
return
|
|
|
|
|
|
fi
|
|
|
|
|
|
echo "$app still running, retrying ($i/5)..."
|
|
|
|
|
|
flatpak kill "$app"
|
|
|
|
|
|
done
|
|
|
|
|
|
echo "$app force closing (KILL)..."
|
|
|
|
|
|
pkill -KILL -f "$app"
|
2026-05-23 23:32:01 +02:00
|
|
|
|
pkill -KILL -f bwrap 2>/dev/null # kill sandbox container
|
2026-05-21 20:38:00 +02:00
|
|
|
|
}
|
2026-05-22 16:15:45 +02:00
|
|
|
|
|
2026-05-23 23:32:01 +02:00
|
|
|
|
# Function for native apps
|
2026-05-21 20:38:00 +02:00
|
|
|
|
close_app() {
|
|
|
|
|
|
local app="$1"
|
|
|
|
|
|
pkill -TERM -f "$app"
|
|
|
|
|
|
for i in $(seq 1 5); do
|
|
|
|
|
|
sleep 1
|
|
|
|
|
|
if ! pgrep -f "$app" > /dev/null; then
|
|
|
|
|
|
echo "$app closed (attempt $i)"
|
|
|
|
|
|
return
|
|
|
|
|
|
fi
|
|
|
|
|
|
echo "$app still running, retrying ($i/5)..."
|
|
|
|
|
|
pkill -TERM -f "$app"
|
|
|
|
|
|
done
|
|
|
|
|
|
echo "$app force closing (KILL)..."
|
|
|
|
|
|
pkill -KILL -f "$app"
|
|
|
|
|
|
}
|
2026-05-22 16:15:45 +02:00
|
|
|
|
|
2026-05-23 23:32:01 +02:00
|
|
|
|
# Prompt
|
|
|
|
|
|
read -r -p "Close all programs and reboot? [Y/n]: " response
|
|
|
|
|
|
response="${response:-Y}"
|
|
|
|
|
|
if [[ ! "$response" =~ ^[Yy]$ ]]; then
|
|
|
|
|
|
echo "Cancelled."
|
|
|
|
|
|
exit 0
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
# Close apps
|
2026-05-21 20:38:00 +02:00
|
|
|
|
close_flatpak "com.discordapp.Discord"
|
|
|
|
|
|
close_flatpak "io.github.lullabyX.sone"
|
|
|
|
|
|
close_flatpak "rocks.shy.VacuumTube"
|
|
|
|
|
|
close_app "firefox"
|
2026-05-22 16:15:45 +02:00
|
|
|
|
|
2026-05-23 23:32:01 +02:00
|
|
|
|
# Close Steam
|
2026-05-21 20:38:00 +02:00
|
|
|
|
if pgrep -f steam > /dev/null; then
|
|
|
|
|
|
steam -shutdown
|
|
|
|
|
|
for i in $(seq 1 5); do
|
|
|
|
|
|
sleep 1
|
|
|
|
|
|
if ! pgrep -f steam > /dev/null; then
|
|
|
|
|
|
echo "Steam closed (attempt $i)"
|
|
|
|
|
|
break
|
|
|
|
|
|
fi
|
|
|
|
|
|
echo "Steam still running ($i/5)..."
|
|
|
|
|
|
done
|
|
|
|
|
|
pkill -KILL -f steam 2>/dev/null
|
|
|
|
|
|
else
|
|
|
|
|
|
echo "Steam not running, skipping..."
|
|
|
|
|
|
fi
|
2026-05-22 16:15:45 +02:00
|
|
|
|
|
2026-05-23 23:32:01 +02:00
|
|
|
|
# Countdown – Ctrl+C to cancel
|
|
|
|
|
|
echo "All programs closed. Rebooting in:"
|
|
|
|
|
|
for i in 3 2 1; do
|
|
|
|
|
|
echo " $i..."
|
|
|
|
|
|
sleep 1
|
|
|
|
|
|
done
|
|
|
|
|
|
sudo shutdown -r now
|
2026-05-22 16:15:45 +02:00
|
|
|
|
|
|
|
|
|
|
|