📦 Tweaks für EOS
tweaksEOS.sh – Terminal-Menüversion
V26.11.001
ZIP-Archiv mit tweaksEOS.sh und tweaksEOS.desktop:
⚠️ WICHTIG
Nutzung auf eigene Verantwortung – bitte vorher Backups anlegen!
__ __ _ _
\ \ / /__| | ___ ___ _ __ ___ ___ | |_ ___
\ \ /\ / / _ \ |/ __/ _ \| '_ ` _ \ / _ \ | __/ _ \
\ V V / __/ | (_| (_) | | | | | | __/ | || (_) |
\_/\_/ \___|_|\___\___/|_| |_| |_|\___| \__\___/
Linux EndeavourOS (EOS) – Systempflege
tweaksEOS.sh V2026-11-001
Distro: EndeavourOS
Bash: 5.3.20(1)-release
====== Wartungsmenü ======
1) Kernel zeigen und eos-update + Flatpak
2) System über AUR aktualisieren (yay)
3) Verwaiste Pakete entfernen
4) Paket-Caches vollständig löschen
5) Spiegelserver aktualisieren (reflector-simple)
6) Zugriffsrechte im Home-Verzeichnis korrigieren
7) Systeminformationen anzeigen
8) Fehler seit letztem Boot (journalctl)
9) Temperatur-Sensorwerte anzeigen
10) SATA-S.M.A.R.T.-Informationen (smartctl)
11) NVMe S.M.A.R.T.-Status anzeigen (nvme-cli)
12) USB S.M.A.R.T.-Status anzeigen
13) Pacman-Datenbanksperre entfernen
14) fstrim auf SSDs ausführen
15) Speicherplatz anzeigen (Zurück mit Q)
16) Systemmonitor htop starten (Zurück mit F10)
0) Beenden
Auswahl [0-16]:
▶️ Aufruf und Startoptionen
bash tweaksEOS.sh
Alternativ:
chmod +x tweaksEOS.sh
./tweaksEOS.sh
Oder über einen Desktop-Starter ausführen
(z.B. tweaksEOS.desktop für KDE)
💡 Hinweis
Das Skript verwendet bei Bedarf sudo – es darf nicht direkt als root gestartet werden!
Script tweaksEOS.sh
#!/usr/bin/env bash
# tweaksEOS.sh – kleine Systempflege für EndeavourOS
# Aufruf: bash tweaksEOS.sh
# Nicht als root starten!
set -uo pipefail
version="V2026-11-001"
# Farben (optional)
if command -v tput >/dev/null 2>&1 && [[ -t 1 ]] && tput setaf 1 >/dev/null 2>&1; then
blau=$(tput setaf 4)
gruen=$(tput setaf 2)
rot=$(tput setaf 1)
gelb=$(tput setaf 3)
reset=$(tput sgr0)
else
blau="" gruen="" rot="" gelb="" reset=""
fi
pause() {
read -r -p "Drücke Enter zum Fortfahren..." _
}
abbruch() {
echo
echo "${rot}Abbruch durch Benutzer.${reset}"
exit 130
}
trap abbruch INT
# Nicht als root starten
if [[ "$EUID" -eq 0 ]]; then
echo "${rot}Bitte nicht als root oder mit sudo starten.${reset}"
exit 1
fi
# EndeavourOS prüfen
if [[ ! -r /etc/os-release ]]; then
echo "Betriebssysteminformationen nicht gefunden."
exit 1
fi
. /etc/os-release
if [[ "$ID" != "endeavouros" ]]; then
echo "Dieses Skript ist ausschließlich für EndeavourOS vorgesehen."
exit 1
fi
distro=$(. /etc/os-release && printf '%s' "${PRETTY_NAME:-EndeavourOS}")
echo "➤ Für einzelne Wartungsaufgaben werden sudo-Rechte benötigt."
if ! sudo -v; then
echo "${rot}sudo-Authentifizierung fehlgeschlagen.${reset}"
exit 1
fi
run_step() {
local title="$1"
shift
echo
echo "${gelb}➤ ${title}${reset}"
"$@"
local ec=$?
if [[ $ec -ne 0 ]]; then
echo "${rot}Befehl mit Fehlercode ${ec} beendet.${reset}"
fi
return 0
}
update_system() {
if ! command -v eos-update >/dev/null 2>&1; then
echo "${rot}eos-update wurde nicht gefunden.${reset}"
return 1
fi
local ec=0
eos-update || ec=$?
if command -v flatpak >/dev/null 2>&1; then
echo
echo "${gelb}➤ Flatpak-Updates${reset}"
flatpak update || ec=$?
echo
echo "${gelb}➤ Ungenutzte Flatpak-Runtimes entfernen${reset}"
flatpak uninstall --unused || ec=$?
fi
return "$ec"
}
update_aur() {
if ! command -v yay >/dev/null 2>&1; then
echo "${rot}yay ist nicht installiert.${reset}"
return 1
fi
yay -Syu
}
remove_orphans() {
local orphans
mapfile -t orphans < <(pacman -Qdtq 2>/dev/null || true)
if [[ ${#orphans[@]} -eq 0 ]]; then
echo "${gruen}Keine verwaisten Pakete gefunden.${reset}"
return 0
fi
echo "Gefundene verwaiste Pakete:"
printf ' %s\n' "${orphans[@]}"
echo
read -r -p "Diese Pakete entfernen? [j/N]: " answer
if [[ "$answer" =~ ^[Jj]$ ]]; then
sudo pacman -Rns -- "${orphans[@]}"
else
echo "Keine Pakete entfernt."
fi
}
clear_caches() {
echo "Achtung: Cache-Dateien werden vollständig gelöscht."
read -r -p "Fortfahren? [j/N]: " answer
[[ "$answer" =~ ^[Jj]$ ]] || {
echo "Abgebrochen."
return 0
}
sudo pacman -Scc
if command -v yay >/dev/null 2>&1; then
yay -Scc
fi
}
update_mirrors() {
if command -v reflector-simple >/dev/null 2>&1; then
reflector-simple
else
echo "${rot}reflector-simple ist nicht installiert.${reset}"
echo "Installierbar beispielsweise mit: yay -S reflector-simple"
return 1
fi
}
fix_home_ownership() {
echo "Es werden nur Einträge im Home-Verzeichnis gesucht,"
echo "die nicht dem aktuellen Benutzer gehören."
echo "Es werden keine pauschalen chmod-Änderungen vorgenommen."
echo
read -r -p "Besitzerrechte korrigieren? [j/N]: " answer
[[ "$answer" =~ ^[Jj]$ ]] || {
echo "Keine Änderungen vorgenommen."
return 0
}
sudo find "$HOME" -xdev ! -user "$USER" \
-exec chown --no-dereference "$USER":"$(id -gn)" {} +
}
show_system_info() {
echo
if command -v inxi >/dev/null 2>&1; then
inxi -Fz
else
echo "inxi ist nicht installiert."
echo
uname -a
echo
cat /etc/os-release
fi
}
show_journal_errors() {
journalctl -b -p 3 --no-pager
}
show_sensors() {
if command -v sensors >/dev/null 2>&1; then
sensors
else
echo "sensors ist nicht installiert (Paket: lm_sensors)."
fi
}
show_nvme_smart() {
if ! command -v nvme >/dev/null 2>&1; then
echo "nvme-cli ist nicht installiert."
return 1
fi
local devices
devices=$(sudo nvme list 2>/dev/null | awk '/^\/dev\/nvme[0-9]+n[0-9]+/ {print $1}')
if [[ -z "$devices" ]]; then
echo "Keine NVMe-Geräte gefunden."
return 0
fi
while IFS= read -r dev; do
[[ -n "$dev" ]] || continue
echo
echo "${blau}S.M.A.R.T.-Status: ${dev}${reset}"
sudo nvme smart-log "$dev"
done <<< "$devices"
}
show_usb_smart() {
if ! command -v smartctl >/dev/null 2>&1; then
echo "smartmontools ist nicht installiert."
return 1
fi
local devices
devices=$(lsblk -dn -o NAME,TRAN | awk '$2 == "usb" {print "/dev/" $1}')
if [[ -z "$devices" ]]; then
echo "Keine USB-Laufwerke gefunden."
return 0
fi
while IFS= read -r dev; do
[[ -n "$dev" ]] || continue
echo
echo "${blau}S.M.A.R.T.-Status: ${dev}${reset}"
sudo smartctl -a "$dev" || \
sudo smartctl -a -d sat "$dev" || \
sudo smartctl -a -d scsi "$dev" || true
done <<< "$devices"
}
show_sata_smart() {
if ! command -v smartctl >/dev/null 2>&1; then
echo "smartmontools ist nicht installiert."
echo "Installiere es mit: sudo pacman -S smartmontools"
return 1
fi
local devices
devices=$(sudo smartctl --scan 2>/dev/null |
awk '$1 ~ /^\/dev\/sd[a-z]+$/ {print $1}')
if [[ -z "$devices" ]]; then
echo "Keine SATA-Geräte gefunden."
return 0
fi
while IFS= read -r dev; do
[[ -n "$dev" ]] || continue
echo
echo "${blau}S.M.A.R.T.-Informationen: ${dev}${reset}"
sudo smartctl -a "$dev"
done <<< "$devices"
}
remove_pacman_lock() {
if pgrep -x pacman >/dev/null || pgrep -x yay >/dev/null; then
echo "${rot}Pacman oder yay läuft noch. Die Sperre wird nicht entfernt.${reset}"
return 1
fi
if [[ ! -e /var/lib/pacman/db.lck ]]; then
echo "Keine Pacman-Datenbanksperre gefunden."
return 0
fi
echo "${rot}Eine aktive Paketverwaltung darf nicht unterbrochen werden.${reset}"
read -r -p "Datenbanksperre wirklich entfernen? [j/N]: " answer
if [[ "$answer" =~ ^[Jj]$ ]]; then
sudo rm -- /var/lib/pacman/db.lck
else
echo "Sperre nicht entfernt."
fi
}
show_disk_space() {
if command -v less >/dev/null 2>&1; then
df -h | less
else
df -h
fi
}
show_menu() {
clear
echo "${gruen}"
echo " __ __ _ _ "
echo " \\ \\ / /__| | ___ ___ _ __ ___ ___ | |_ ___ "
echo " \\ \\ /\\ / / _ \\ |/ __/ _ \\| '_ \` _ \\ / _ \\ | __/ _ \\"
echo " \\ V V / __/ | (_| (_) | | | | | | __/ | || (_) |"
echo " \\_/\\_/ \\___|_|\\___\\___/|_| |_| |_|\\___| \\__\\___/ "
echo
echo " Linux EndeavourOS (EOS) – Systempflege"
echo " tweaksEOS.sh ${version}"
echo " Distro: ${distro}"
echo " Bash: ${BASH_VERSION}"
echo "${reset}"
echo "${gelb}====== Wartungsmenü ======${reset}"
echo "1) Kernel zeigen und eos-update + Flatpak"
echo "2) System über AUR aktualisieren (yay)"
echo "3) Verwaiste Pakete entfernen"
echo "4) Paket-Caches vollständig löschen"
echo "5) Spiegelserver aktualisieren (reflector-simple)"
echo "6) Zugriffsrechte im Home-Verzeichnis korrigieren"
echo "7) Systeminformationen anzeigen"
echo "8) Fehler seit letztem Boot (journalctl)"
echo "9) Temperatur-Sensorwerte anzeigen"
echo "10) SATA-S.M.A.R.T.-Informationen (smartctl)"
echo "11) NVMe S.M.A.R.T.-Status anzeigen (nvme-cli)"
echo "12) USB S.M.A.R.T.-Status anzeigen"
echo "13) Pacman-Datenbanksperre entfernen"
echo "14) fstrim auf SSDs ausführen"
echo "15) Speicherplatz anzeigen (Zurück mit Q)"
echo "16) Systemmonitor htop starten (Zurück mit F10)"
echo "0) Beenden"
echo
}
while true; do
show_menu
read -r -p "Auswahl [0-16]: " answer
case "$answer" in
1)
echo
echo "${gelb}Installierte Kernel-Pakete:${reset}"
pacman -Q linux linux-lts 2>&1
echo "Aktuell laufender Kernel: $(uname -r)"
run_step "System aktualisieren" update_system
pause
;;
2)
run_step "AUR- und Systemupdates" update_aur
pause
;;
3)
run_step "Verwaiste Pakete prüfen" remove_orphans
pause
;;
4)
run_step "Paket-Caches leeren" clear_caches
pause
;;
5)
run_step "Arch-Mirrors auswählen und ranken" update_mirrors
pause
;;
6)
run_step "Besitzerrechte im Home-Verzeichnis prüfen" fix_home_ownership
pause
;;
7)
run_step "Systeminformationen" show_system_info
pause
;;
8)
run_step "Fehler seit dem letzten Boot" show_journal_errors
pause
;;
9)
run_step "Temperatursensoren" show_sensors
pause
;;
10)
run_step "SATA-S.M.A.R.T.-Informationen" show_sata_smart
pause
;;
11)
run_step "NVMe-S.M.A.R.T.-Status" show_nvme_smart
pause
;;
12)
run_step "USB-S.M.A.R.T.-Status" show_usb_smart
pause
;;
13)
run_step "Pacman-Datenbanksperre prüfen" remove_pacman_lock
pause
;;
14)
run_step "fstrim auf unterstützten Dateisystemen" sudo fstrim -av
pause
;;
15)
show_disk_space
;;
16)
if command -v htop >/dev/null 2>&1; then
htop
else
echo "htop ist nicht installiert."
pause
fi
;;
0)
echo "${gruen}Skript wird beendet.${reset}"
exit 0
;;
*)
echo "${rot}Ungültige Auswahl.${reset}"
pause
;;
esac
done
Beispiel: KDE Shortcut tweaksEOS.desktop
[Desktop Entry]
Comment[de_DE]=
Comment=
Exec=konsole -e '~/bin/tweaksEOS.sh'
GenericName[de_DE]=
GenericName=
Icon=update-none-symbolic
MimeType=
Name[de_DE]=tweaksEOS
Name=tweaksEOS
Path=
StartupNotify=true
Terminal=false
TerminalOptions=
Type=Application
X-DBUS-ServiceName=
X-DBUS-StartupType=
X-KDE-SubstituteUID=false
X-KDE-Username=