Interactive terminal setup for Fedora 44+ — debloat, configure, and install apps guided by your role.
git clone https://github.com/yourusername/fedora-essentials.git
cd fedora-essentials
sudo ./main.shRequires Fedora 44+,
sudo, and an internet connection.whiptailis auto-installed if missing.
- Choose a profile — Developer, Office, Media, or Custom
- Pick categories — GNOME Desktop, Browsers, Development, Media, Productivity, System Tools
- Review checklists —
●marks what's already installed; profile pre-checks suggestions - Confirm — review the full diff (installs + removals) before anything runs
- Execute — live progress; pauses on errors (ENTER to continue, Ctrl+C to abort)
Checked = install or keep. Unchecked = remove or skip. Only real changes are applied.
| Category | Apps | Highlights |
|---|---|---|
| 🖥️ GNOME Desktop | 17 | Tweaks, Extensions, bulk bloat removal |
| 🌐 Browsers | 7 | Brave, Chromium, LibreWolf, Vivaldi, Edge |
| 🛠️ Development | 23 | VSCode, Git, Python, Node, Go, Rust, Java, Docker, Android Studio, Qt, Postman |
| 🎵 Media | 8 | VLC, MPV, FFmpeg, GStreamer codecs, OBS, Kdenlive, Spotify |
| 📝 Productivity | 10 | LibreOffice, Thunderbird, GIMP, Inkscape, Obsidian, fonts |
| ⚙️ System Tools | 19 | btop, fzf, ripgrep, bat, fd, zoxide, timeshift, rclone |
Select Developer to get extra prompts for:
- Focus areas: Web, Desktop apps, Android, DevOps
- Languages: Python, Node.js, Go, Rust, Java, C/C++, .NET, PHP
Matching tools are pre-checked automatically.
fedora-essentials/
├── main.sh # Entry point: profile → checklists → execution
├── lib/
│ ├── utils.sh # Logging, run_cmd, package detection, error pause
│ ├── ui.sh # whiptail wrappers (checklist, radiolist, msgbox)
│ ├── repos.sh # RPM Fusion, Flathub, Brave, VSCode, Docker repos
│ └── dnf_tweaks.sh # DNF optimizations + system update
├── modules/ # One file per category (84 apps total)
│ ├── gnome_tweaks.sh
│ ├── browsers.sh
│ ├── development.sh
│ ├── media.sh
│ ├── productivity.sh
│ └── system_tools.sh
└── assets/
├── logo.svg
├── banner.txt
└── demo.png
Every session logs to /var/log/fedora-essentials-<timestamp>.log (symlinked at fedora-essentials-latest.log).
Add an app to any module's app list:
# pkg|label|source|extra|tags|checkcmd
"com.app.Name|My App|flatpak|flathub|dev,web|"
"my-tool|My CLI Tool|dnf||lang-python|which my-tool"- tags — drives profile suggestions (
rm:TAG= pre-uncheck for removal) - checkcmd — custom install-detection command (overrides rpm/flatpak defaults)
MIT © 2026 Jonas
