diff --git a/usr/bin/setup-assistant b/usr/bin/setup-assistant index 9d747a7..5d4a98b 100755 --- a/usr/bin/setup-assistant +++ b/usr/bin/setup-assistant @@ -1,772 +1,245 @@ #!/bin/bash -function goto + +function askYesNoQuestion { - label=$1 - cmd=$(sed -n "/^:[[:blank:]][[:blank:]]*${label}/{:a;n;p;ba};" $0 | - grep -v ':$') - eval "$cmd" - exit + yad \ + --image="$1" \ + --title="$2" \ + --window-icon="$3" \ + --geometry=700x100 \ + --button=No:0 \ + --button=Yes:1 \ + --text-align=center \ + --center \ + --text "$4"; + local code=$? + if [ "$code" -eq 252 ]; then + # The user doesn't want to continue here, they pressed the X button + exit 0 + elif [ "$code" -eq 1 ]; then + return 1 + # In case there is an unknown exit code, we assume No + else + return 0 + fi +} + +function askPackageSelectionQuestion +{ + askPackageSelectionQuestion_out=() + + local stdout + stdout=$(yad \ + --image="$1" \ + --title="$2" \ + --window-icon="$3" \ + --text "$4" \ + --geometry=600x500 \ + --list \ + --checklist \ + --column=Install \ + --column="Package:hd" \ + --column="$5" \ + --center < "$6") + + if [ "$?" -eq 252 ]; then + # The user doesn't want to continue here, they pressed the X button + exit 0 + fi + + while IFS= read -r line + do + local checked="$(echo "$line" | cut -d '|' -f1)" + local packages="$(echo "$line" | cut -d '|' -f2)" + if [ "$checked" == "TRUE" ]; then + for package in $packages + do + askPackageSelectionQuestion_out+=("$package") + done + fi + done < <(printf '%s\n' "$stdout") +} + +function isOnline +{ + # Because this can never be offline, right? + wget -q --spider http://garudalinux.org + return $? } function upgrade2ultimate { - rm -rf /tmp/setup-assistant - mkdir -p /tmp/setup-assistant + PACKAGES=() + PREPARE=() + SETUP=() - clear - if ! yad \ - --image='font-manager' \ - --title="Upgrade to ULTIMATE" \ - --window-icon='update' \ - --geometry=700x100 \ - --button=No:0 \ - --button=Yes:1 \ - --text-align=center \ - --center \ - --text "Do you need cjk font support (fixes missing characters)?"; then - echo "noto-fonts-cjk" >> /tmp/setup-assistant/pkgs.txt + if ! askYesNoQuestion "font-manager" "Upgrade to ULTIMATE" "update" "Do you need cjk font support (fixes missing characters)?"; then + PACKAGES+=("noto-fonts-cjk") fi - if ! yad \ - --image='printer' \ - --title="Upgrade to ULTIMATE" \ - --window-icon='update' \ - --geometry=700x100 \ - --button=No:0 \ - --button=Yes:1 \ - --text-align=center \ - --center \ - --text "Do you need Printer,Scanner and Samba Support?"; then - if pacman -Qs plasma-workspace > /dev/null ; then - echo "printer-support - scanner-support - samba-support - kdenetwork-filesharing - print-manager - skanlite" >> /tmp/setup-assistant/pkgs.txt - else - echo "printer-support - scanner-support - samba-support - gvfs-smb - simple-scan" >> /tmp/setup-assistant/pkgs.txt - fi + if ! askYesNoQuestion "printer" "Upgrade to ULTIMATE" "update" "Do you need Printer, Scanner and Samba Support?"; then + if pacman -Qs plasma-workspace > /dev/null ; then + PACKAGES+=("printer-support" + "scanner-support" + "samba-support" + "kdenetwork-filesharing" + "print-manager" + "skanlite") + else + PACKAGES+=("printer-support" + "scanner-support" + "samba-support" + "gvfs-smb" + "simple-scan") + fi fi - if ! yad \ - --image='wallpaper' \ - --title="Upgrade to ULTIMATE" \ - --window-icon='update' \ - --geometry=700x100 \ - --button=No:0 \ - --button=Yes:1 \ - --text-align=center \ - --center \ - --text "Do you want to install additional Garuda wallpapers?"; then - echo "garuda-wallpapers-extra" >> /tmp/setup-assistant/pkgs.txt + if ! askYesNoQuestion "wallpaper" "Upgrade to ULTIMATE" "update" "Do you want to install additional Garuda wallpapers?"; then + PACKAGES+=("garuda-wallpapers-extra") fi - - if ! yad \ - --image='AppImageLauncher' \ - --title="Upgrade to ULTIMATE" \ - --window-icon='update' \ - --geometry=700x100 \ - --button=No:0 \ - --button=Yes:1 \ - --text-align=center \ - --center \ - --text "What about Snaps, Flatpak, Appimage and firmware update support?"; then + if ! askYesNoQuestion "AppImageLauncher" "Upgradpe to ULTIMATE" "update" "What about Snaps, Flatpak, Appimage and firmware update support?"; then if pacman -Qs pamac-aur > /dev/null ; then - echo "sudo pacman --noconfirm -R pamac-aur" >> /tmp/setup-assistant/prepare.sh + PREPARE+=("sudo pacman --noconfirm -R pamac-aur") fi if pacman -Qs pamac-tray-appindicator > /dev/null ; then - echo "sudo pacman --noconfirm -R pamac-tray-appindicator" >> /tmp/setup-assistant/prepare.sh + PREPARE+=("pacman --noconfirm -R pamac-tray-appindicator") fi - echo "pamac-all - appimagelauncher - fwupd - gnome-firmware - apparmor - snapd - snapd-glib - flatpak" >> /tmp/setup-assistant/pkgs.txt - echo "sudo systemctl enable --now snapd.socket" >> /tmp/setup-assistant/setup_root.sh - echo "sudo systemctl enable --now apparmor.service" >> /tmp/setup-assistant/setup_root.sh - echo "sudo systemctl enable --now snapd.apparmor.service" >> /tmp/setup-assistant/setup_root.sh - fi - + PACKAGES+=("pamac-all" + "appimagelauncher" + "fwupd" + "gnome-firmware" + "apparmor" + "snapd" + "snapd-glib" + "flatpak") + SETUP+=("systemctl enable --now snapd.socket" + "systemctl enable --now apparmor.service" + "systemctl enable --now snapd.apparmor.service") + fi if pacman -Qs plasma-desktop > /dev/null ; then - if ! yad \ - --image='plasmashell' \ - --title="Upgrade to ULTIMATE" \ - --window-icon='update' \ - --geometry=700x100 \ - --button=No:0 \ - --button=Yes:1 \ - --text-align=center \ - --center \ - --text "Do you want to install additional KDE applications?"; then - echo "elisa - khelpcenter - krdc - krfb - kompare - krita - krename - ksystemlog - khotkeys - drkonqi - kscreen - kgamma5 - ksshaskpass - kwrited - kmouth - lokalize - kup - kmag - kimtoy - kleopatra - qt5-imageformats - kimageformats - kdeplasma-addons - plasma-thunderbolt - plasma-vault - plasma-disks - plasma-meta - vlc" >> /tmp/setup-assistant/pkgs.txt + if ! askYesNoQuestion "plasmashell" "Upgrade to ULTIMATE" "update" "Do you want to install additional KDE applications?"; then + PACKAGES+=("elisa" + "khelpcenter" + "krdc" + "krfb" + "kompare" + "krita" + "krename" + "ksystemlog" + "khotkeys" + "drkonqi" + "kscreen" + "kgamma5" + "ksshaskpass" + "kwrited" + "kmouth" + "lokalize" + "kup" + "kmag" + "kimtoy" + "kleopatra" + "qt5-imageformats" + "kimageformats" + "kdeplasma-addons" + "plasma-thunderbolt" + "plasma-vault" + "plasma-disks" + "plasma-meta" + "vlc") fi fi if pacman -Qs gnome-shell > /dev/null ; then - if ! yad \ - --image='gnome-shell' \ - --title="Upgrade to ULTIMATE" \ - --window-icon='update' \ - --geometry=700x100 \ - --button=No:0 \ - --button=Yes:1 \ - --text-align=center \ - --center \ - --text "Do you want to install additional GNOME applications?"; then - echo "gpaste - eog-plugins - grilo-plugins - seahorse-nautilus - gtkhash-nautilus - gnome-logs - gnome-remote-desktop - gnome-sound-recorder - vino - rygel - shotwell - lollypop" >> /tmp/setup-assistant/pkgs.txt + if ! askYesNoQuestion "gnome-shell" "Upgrade to ULTIMATE" "update" "Do you want to install additional GNOME applications?"; then + PACKAGES+=("gpaste" + "eog-plugins" + "grilo-plugins" + "seahorse-nautilus" + "gtkhash-nautilus" + "gnome-logs" + "gnome-remote-desktop" + "gnome-sound-recorder" + "vino" + "rygel" + "shotwell" + "lollypop") fi fi - - yad \ - --image='libreoffice-main' \ - --title="Upgrade to ULTIMATE" \ - --window-icon='update' \ - --text "There are a lot of office suites to choose from!" \ - --geometry=600x500 \ - --list \ - --checklist \ - --column=Install \ - --column=Office \ - --center < /usr/lib/setup-assistant/office.txt > /tmp/setup-assistant/office.txt - - if grep -R "LibreOffice Fresh" /tmp/setup-assistant/office.txt; then - echo "libreoffice-fresh - libmythes" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "LibreOffice Still" /tmp/setup-assistant/office.txt; then - echo "libreoffice-still - libmythes" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "OnlyOffice" /tmp/setup-assistant/office.txt; then - echo "onlyoffice-bin" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "WPS Office" /tmp/setup-assistant/office.txt; then - echo "wps-office - wps-office-mime - ttf-wps-fonts" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Free Office" /tmp/setup-assistant/office.txt; then - echo "freeoffice" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Microsoft Office" /tmp/setup-assistant/office.txt; then - echo "ms-office-online" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Yozo Office" /tmp/setup-assistant/office.txt; then - echo "yozo-office - yozo-office-fonts" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Calligra Office" /tmp/setup-assistant/office.txt; then - echo "calligra" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Abiword" /tmp/setup-assistant/office.txt; then - echo "abiword" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Joplin" /tmp/setup-assistant/office.txt; then - echo "joplin-desktop-electron" >> /tmp/setup-assistant/pkgs.txt + askPackageSelectionQuestion 'libreoffice-main' "Upgrade to ULTIMATE" 'update' "What Office suites do you want?" "Office" "/usr/lib/setup-assistant/office.txt" + + # Absolute HACK! + if [[ "${askPackageSelectionQuestion_out[@]}" =~ "libreoffice-fresh" ]] && [[ "${askPackageSelectionQuestion_out[@]}" =~ "libreoffice-still" ]] ; then + askPackageSelectionQuestion_out=( "${askPackageSelectionQuestion_out[@]/libreoffice-still}" ) fi - yad \ - --image='firefox' \ - --title="Upgrade to ULTIMATE" \ - --window-icon='update' \ - --text "Here are some browsers that you can choose from:" \ - --geometry=600x400 \ - --list \ - --checklist \ - --column=Install \ - --column=Applications \ - --center < /usr/lib/setup-assistant/browsers.txt > /tmp/setup-assistant/browsers.txt + PACKAGES=("${PACKAGES[@]}" "${askPackageSelectionQuestion_out[@]}") - if grep -R "Firefox" /tmp/setup-assistant/browsers.txt; then - echo "firefox" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Chromium" /tmp/setup-assistant/browsers.txt; then - echo "chromium" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Vivaldi" /tmp/setup-assistant/browsers.txt; then - echo "vivaldi - vivaldi-ffmpeg-codecs" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Opera" /tmp/setup-assistant/browsers.txt; then - echo "opera - opera-ffmpeg-codecs" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Tor Browser" /tmp/setup-assistant/browsers.txt; then - echo "torbrowser-launcher" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Otter Browser" /tmp/setup-assistant/browsers.txt; then - echo "otter-browser" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Brave" /tmp/setup-assistant/browsers.txt; then - echo "brave" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Falkon" /tmp/setup-assistant/browsers.txt; then - echo "falkon" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Ungoogled" /tmp/setup-assistant/browsers.txt; then - echo "ungoogled-chromium" >> /tmp/setup-assistant/pkgs.txt + askPackageSelectionQuestion 'firefox' "Upgrade to ULTIMATE" 'update' "What extra browsers do you want?" "Applications" "/usr/lib/setup-assistant/browsers.txt" + PACKAGES=("${PACKAGES[@]}" "${askPackageSelectionQuestion_out[@]}") + + askPackageSelectionQuestion 'telegram-desktop' "Upgrade to ULTIMATE" 'update' "What communication software do you want?" "Applications" "/usr/lib/setup-assistant/communication.txt" + PACKAGES=("${PACKAGES[@]}" "${askPackageSelectionQuestion_out[@]}") + + askPackageSelectionQuestion 'thunderbird' "Upgrade to ULTIMATE" 'update' "What email clients do you want?" "Applications" "/usr/lib/setup-assistant/mail.txt" + PACKAGES=("${PACKAGES[@]}" "${askPackageSelectionQuestion_out[@]}") + + askPackageSelectionQuestion 'audacity' "Upgrade to ULTIMATE" 'update' "What audio software do you want?" "Applications" "/usr/lib/setup-assistant/audio.txt" + PACKAGES=("${PACKAGES[@]}" "${askPackageSelectionQuestion_out[@]}") + + askPackageSelectionQuestion 'kdenlive' "Upgrade to ULTIMATE" 'update' "What video software do you want?" "Applications" "/usr/lib/setup-assistant/video.txt" + PACKAGES=("${PACKAGES[@]}" "${askPackageSelectionQuestion_out[@]}") + + askPackageSelectionQuestion 'gimp' "Upgrade to ULTIMATE" 'update' "What graphics software do you want?" "Applications" "/usr/lib/setup-assistant/graphics.txt" + PACKAGES=("${PACKAGES[@]}" "${askPackageSelectionQuestion_out[@]}") + + askPackageSelectionQuestion 'gimp' "Upgrade to ULTIMATE" 'update' "What multimedia software do you want?" "Applications" "/usr/lib/setup-assistant/multimedia.txt" + PACKAGES=("${PACKAGES[@]}" "${askPackageSelectionQuestion_out[@]}") + + askPackageSelectionQuestion 'code' "Upgrade to ULTIMATE" 'update' "What developement software do you want?" "Applications" "/usr/lib/setup-assistant/development.txt" + PACKAGES=("${PACKAGES[@]}" "${askPackageSelectionQuestion_out[@]}") + + # Absolute HACK! + if [[ "${askPackageSelectionQuestion_out[@]}" =~ "podman" ]]; then + SETUP+=("systemctl enable --now podman.socket") fi + askPackageSelectionQuestion 'virtualbox' "Upgrade to ULTIMATE" 'update' "What virtualization software do you want?" "Applications" "/usr/lib/setup-assistant/virtualization.txt" + PACKAGES=("${PACKAGES[@]}" "${askPackageSelectionQuestion_out[@]}") - yad \ - --image='nextcloud-client' \ - --title="Upgrade to ULTIMATE" \ - --window-icon='update' \ - --text "Some general internet applications?" \ - --geometry=600x500 \ - --list \ - --checklist \ - --column=Install \ - --column=Applications \ - --center < /usr/lib/setup-assistant/internet.txt > /tmp/setup-assistant/internet.txt - - if grep -R "Nextcloud-client" /tmp/setup-assistant/internet.txt; then - echo "nextcloud-client" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Firefox Bitwarden" /tmp/setup-assistant/internet.txt; then - echo "firefox-extension-bitwarden" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Firefox XDM" /tmp/setup-assistant/internet.txt; then - echo "firefox-extension-xdm-browser-monitor" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Syncthing-GTK" /tmp/setup-assistant/internet.txt; then - echo "syncthing-gtk" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Filezilla" /tmp/setup-assistant/internet.txt; then - echo "filezilla" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Putty" /tmp/setup-assistant/internet.txt; then - echo "putty" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Nitroshare" /tmp/setup-assistant/internet.txt; then - echo "nitroshare" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Jdownloader2" /tmp/setup-assistant/internet.txt; then - echo "jdownloader2" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Deluge" /tmp/setup-assistant/internet.txt; then - echo "deluge-gtk" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Qbittorrent" /tmp/setup-assistant/internet.txt; then - echo "qbittorrent" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Cockpit" /tmp/setup-assistant/internet.txt; then - echo "cockpit - cockpit-dashboard - cockpit-machines" >> /tmp/setup-assistant/pkgs.txt - echo "sudo systemctl enable --now cockpit.socket" >> /tmp/setup-assistant/setup_root.sh - fi - if grep -R "Twitch GUI" /tmp/setup-assistant/internet.txt; then - echo "streamlink-twitch-gui" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Remmina" /tmp/setup-assistant/internet.txt; then - echo "remmina" >> /tmp/setup-assistant/pkgs.txt + # Absolute HACK! + if [[ "${askPackageSelectionQuestion_out[@]}" =~ "virt-manager-meta" ]] || [[ "${askPackageSelectionQuestion_out[@]}" =~ "gnome-boxes" ]]; then + SETUP+=("systemctl enable --now libvirtd") fi - - yad \ - --image='telegram-desktop' \ - --title="Upgrade to ULTIMATE" \ - --window-icon='update' \ - --text "Do you need communication software?" \ - --geometry=600x500 \ - --list \ - --checklist \ - --column=Install \ - --column=Applications \ - --center < /usr/lib/setup-assistant/communication.txt > /tmp/setup-assistant/communication.txt - - if grep -R "Telegram Desktop" /tmp/setup-assistant/communication.txt; then - echo "telegram-desktop" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Discord" /tmp/setup-assistant/communication.txt; then - echo "discord" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Element" /tmp/setup-assistant/communication.txt; then - echo "element-desktop" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Wire" /tmp/setup-assistant/communication.txt; then - echo "wire-desktop" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Signal" /tmp/setup-assistant/communication.txt; then - echo "signal-desktop" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Jitsi-Meet" /tmp/setup-assistant/communication.txt; then - echo "jitsi-meet" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Zoom" /tmp/setup-assistant/communication.txt; then - echo "zoom" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Skype" /tmp/setup-assistant/communication.txt; then - echo "skypeforlinux-stable-bin" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Slack" /tmp/setup-assistant/communication.txt; then - echo "slack-desktop" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Whatsapp" /tmp/setup-assistant/communication.txt; then - echo "whatsapp-nativefier" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Mumble" /tmp/setup-assistant/communication.txt; then - echo "mumble" >> /tmp/setup-assistant/pkgs.txt - fi - - - yad \ - --image='thunderbird' \ - --title="Upgrade to ULTIMATE" \ - --window-icon='update' \ - --text "Mail clients:" \ - --geometry=600x500 \ - --list \ - --checklist \ - --column=Install \ - --column=Applications \ - --center < /usr/lib/setup-assistant/mail.txt > /tmp/setup-assistant/mail.txt - - if grep -R "Thunderbird" /tmp/setup-assistant/mail.txt; then - echo "thunderbird" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Kmail" /tmp/setup-assistant/mail.txt; then - echo "kmail" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Geary" /tmp/setup-assistant/mail.txt; then - echo "geary" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Trojita" /tmp/setup-assistant/mail.txt; then - echo "trojita" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Mailspring" /tmp/setup-assistant/mail.txt; then - echo "mailspring" >> /tmp/setup-assistant/pkgs.txt - fi - - - yad \ - --image='audacity' \ - --title="Upgrade to ULTIMATE" \ - --window-icon='update' \ - --text "What about audio software?" \ - --geometry=600x500 \ - --list \ - --checklist \ - --column=Install \ - --column=Applications \ - --center < /usr/lib/setup-assistant/audio.txt >> /tmp/setup-assistant/audio.txt - - if grep -R "Olivia" /tmp/setup-assistant/audio.txt; then - echo "olivia" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Kwave" /tmp/setup-assistant/audio.txt; then - echo "kwave" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Cantata" /tmp/setup-assistant/audio.txt; then - echo "cantata" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Audacious" /tmp/setup-assistant/audio.txt; then - echo "audacious" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Audacity" /tmp/setup-assistant/audio.txt; then - echo "audacity" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Lollypop" /tmp/setup-assistant/audio.txt; then - echo "lollypop" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Ardour" /tmp/setup-assistant/audio.txt; then - echo "ardour" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "LMMS" /tmp/setup-assistant/audio.txt; then - echo "lmms" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Mixxx" /tmp/setup-assistant/audio.txt; then - echo "mixxx" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "MuseScore" /tmp/setup-assistant/audio.txt; then - echo "musescore" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Rosegarden" /tmp/setup-assistant/audio.txt; then - echo "rosegarden" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Strawberry" /tmp/setup-assistant/audio.txt; then - echo "strawberry" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Bitwig" /tmp/setup-assistant/audio.txt; then - echo "bitwig-studio" >> /tmp/setup-assistant/pkgs.txt - fi - - yad \ - --image='kdenlive' \ - --title="Upgrade to ULTIMATE" \ - --window-icon='update' \ - --text "What about video software?" \ - --geometry=600x500 \ - --list \ - --checklist \ - --column=Install \ - --column=Applications \ - --center < /usr/lib/setup-assistant/video.txt >> /tmp/setup-assistant/video.txt - - if grep -R "Kdenlive" /tmp/setup-assistant/video.txt; then - echo "kdenlive - movit - sox - opus-tools - frei0r-plugins" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Shotcut" /tmp/setup-assistant/video.txt; then - echo "shotcut" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Pitivi" /tmp/setup-assistant/video.txt; then - echo "pitivi - frei0r-plugins" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Openshot" /tmp/setup-assistant/video.txt; then - echo "openshot" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "OBS Studio" /tmp/setup-assistant/video.txt; then - echo "obs-studio" >> /tmp/setup-assistant/pkgs.txt - fi - - if grep -R "SMPlayer" /tmp/setup-assistant/video.txt; then - echo "smplayer - smplayer-skins - smplayer-themes" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Vlc" /tmp/setup-assistant/video.txt; then - echo "vlc" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Baka-Mplayer" /tmp/setup-assistant/video.txt; then - echo "baka-mplayer" >> /tmp/setup-assistant/pkgs.txt - fi - - - - yad \ - --image='gimp' \ - --title="Upgrade to ULTIMATE" \ - --window-icon='update' \ - --text "What about graphics software?" \ - --geometry=600x500 \ - --list \ - --checklist \ - --column=Install \ - --column=Applications \ - --center < /usr/lib/setup-assistant/graphics.txt >> /tmp/setup-assistant/graphics.txt - - if grep -R "GIMP" /tmp/setup-assistant/graphics.txt; then - echo "gimp" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Krita" /tmp/setup-assistant/graphics.txt; then - echo "krita - krita-plugin-gmic - opencolorio" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Kolourpaint" /tmp/setup-assistant/graphics.txt; then - echo "kolourpaint" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Digikam" /tmp/setup-assistant/graphics.txt; then - echo "digikam" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Inkscape" /tmp/setup-assistant/graphics.txt; then - echo "inkscape" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Blender" /tmp/setup-assistant/graphics.txt; then - echo "blender" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Pencil 2D" /tmp/setup-assistant/graphics.txt; then - echo "pencil2d" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Synfig Studio" /tmp/setup-assistant/graphics.txt; then - echo "synfigstudio" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "DarkTable" /tmp/setup-assistant/graphics.txt; then - echo "darktable" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "FontForge" /tmp/setup-assistant/graphics.txt; then - echo "fontforge" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "MyPaint" /tmp/setup-assistant/graphics.txt; then - echo "mypaint" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "ImageMagick" /tmp/setup-assistant/graphics.txt; then - echo "imagemagick" >> /tmp/setup-assistant/pkgs.txt - fi - - - yad \ - --image='kodi' \ - --title="Upgrade to ULTIMATE" \ - --window-icon='update' \ - --text "What about multimedia software?" \ - --geometry=600x500 \ - --list \ - --checklist \ - --column=Install \ - --column=Applications \ - --center < /usr/lib/setup-assistant/multimedia.txt >> /tmp/setup-assistant/multimedia.txt - - if grep -R "Converseen" /tmp/setup-assistant/multimedia.txt; then - echo "converseen" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Transmageddon" /tmp/setup-assistant/multimedia.txt; then - echo "transmageddon" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Soundconverter" /tmp/setup-assistant/multimedia.txt; then - echo "soundconverter" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Stremio" /tmp/setup-assistant/multimedia.txt; then - echo "stremio" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Kodi" /tmp/setup-assistant/multimedia.txt; then - echo "kodi - kodi-platform - kodi-eventclients" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Mediaelch" /tmp/setup-assistant/multimedia.txt; then - echo "mediaelch" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Subtitlecomposer" /tmp/setup-assistant/multimedia.txt; then - echo "subtitlecomposer" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Kid3" /tmp/setup-assistant/multimedia.txt; then - echo "kid3" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "K3B" /tmp/setup-assistant/multimedia.txt; then - echo "k3b - cdparanoia - cdrdao - dvd+rw-tools - emovix - transcode - vcdimager - cdrtools" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "BRASERO" /tmp/setup-assistant/multimedia.txt; then - echo "brasero" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "XFBURN" /tmp/setup-assistant/multimedia.txt; then - echo "xfburn" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Easytag" /tmp/setup-assistant/multimedia.txt; then - echo "easytag" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Plex" /tmp/setup-assistant/multimedia.txt; then - echo "plex-media-player" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Handbrake" /tmp/setup-assistant/multimedia.txt; then - echo "handbrake" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Mystiq" /tmp/setup-assistant/multimedia.txt; then - echo "mystiq" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Hypnotix" /tmp/setup-assistant/multimedia.txt; then - echo "hypnotix" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Variety" /tmp/setup-assistant/multimedia.txt; then - echo "variety" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Conky" /tmp/setup-assistant/multimedia.txt; then - echo "conky-lua-nv - conky-manager" >> /tmp/setup-assistant/pkgs.txt - fi - - - yad \ - --image='code' \ - --title="Upgrade to ULTIMATE" \ - --window-icon='update' \ - --text "Are you a developer who needs one of these?" \ - --geometry=600x500 \ - --list \ - --checklist \ - --column=Install \ - --column=Applications \ - --center < /usr/lib/setup-assistant/development.txt >> /tmp/setup-assistant/development.txt - if grep -R "Visual Studio" /tmp/setup-assistant/development.txt; then - echo "code" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "GNU Emacs" /tmp/setup-assistant/development.txt; then - echo "emacs" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Atom" /tmp/setup-assistant/development.txt; then - echo "atom" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "IntelliJ-IDEA" /tmp/setup-assistant/development.txt; then - echo "intellij-idea-community-edition" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "PyCharm" /tmp/setup-assistant/development.txt; then - echo "pycharm-community-edition" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "QtCreator" /tmp/setup-assistant/development.txt; then - echo "qtcreator" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "GitHub" /tmp/setup-assistant/development.txt; then - echo "github-desktop-bin" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Plasma SDK" /tmp/setup-assistant/development.txt; then - echo "plasma-sdk" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Android Studio" /tmp/setup-assistant/development.txt; then - echo "android-studio - android-studio-launcher" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Docker" /tmp/setup-assistant/development.txt; then - echo "podman-docker - podman-compose - crun" >> /tmp/setup-assistant/pkgs.txt - echo "sudo systemctl enable --now podman.socket" >> /tmp/setup-assistant/setup_root.sh - fi - if grep -R "BlackArch" /tmp/setup-assistant/development.txt; then - echo "curl -O https://blackarch.org/strap.sh - chmod +x strap.sh - sudo ./strap.sh - rm strap.sh - sed -i 's/^# Server/Server/' /etc/pacman.d/blackarch-mirrorlist - sudo pacman -Syu" >> /tmp/setup-assistant/setup_root.sh - fi - - - yad \ - --image='virtualbox' \ - --title="Upgrade to ULTIMATE" \ - --window-icon='update' \ - --text "Are you rather a fan of Virtualbox or virt-manager?" \ - --geometry=600x400 \ - --list \ - --checklist \ - --column=Install \ - --column=Applications \ - --center < /usr/lib/setup-assistant/virtualization.txt >> /tmp/setup-assistant/virtualization.txt - if grep -R "Virtualbox" /tmp/setup-assistant/virtualization.txt; then - echo "virtualbox-meta" >> /tmp/setup-assistant/pkgs.txt - fi - if grep -R "Virt-manager" /tmp/setup-assistant/virtualization.txt; then - echo "virt-manager-meta" >> /tmp/setup-assistant/pkgs.txt - echo "sudo systemctl enable --now libvirtd" >> /tmp/setup-assistant/setup_root.sh - fi - - - alacritty -e sh /usr/lib/setup-assistant/apply.sh - - if [ -e "/tmp/setup-assistant/setup_user.sh" ]; then - sh /tmp/setup-assistant/setup_user.sh - fi - - rm -rf /tmp/setup-assistant + alacritty -e bash /usr/lib/setup-assistant/apply.sh <( IFS=$'\n'; echo "${PREPARE[*]}" ) <(printf '%s\n' "${PACKAGES[@]}") <( IFS=$'\n'; echo "${SETUP[*]}" ) } - +# I'm kind of confused why this is not part of the installer? systemctl --user enable psd >/dev/null 2>&1 & systemctl --user start psd >/dev/null 2>&1 & libinput-gestures-setup autostart >/dev/null 2>&1 & libinput-gestures-setup start >/dev/null 2>&1 & -: isup -wget -q --spider http://garudalinux.org - -if [ $? -eq 0 ]; then - echo "Online" -else - if ! yad \ - --image='update' \ - --title="Setup Assistant" \ - --window-icon='update' \ - --geometry=700x100 \ - --button=No:0 \ - --button=Yes:1 \ - --text-align=center \ - --center \ - --text "No internet connection available, try again?"; then - goto isup - else exit +while ! isOnline +do + if askYesNoQuestion "update" "Setup Assistant" "update" "No internet connection available, try again?"; then + exit 0 fi +done + +if ! askYesNoQuestion "update" "Setup Assistant" "update" "Do you want to get a recent mirrorlist?"; then + reflector-simple >/dev/null 2>&1 fi -if ! yad \ - --image='update' \ - --title="Setup Assistant" \ - --window-icon='update' \ - --geometry=700x100 \ - --button=No:0 \ - --button=Yes:1 \ - --text-align=center \ - --center \ - --text "Do you want to get a recent mirrorlist?"; then - reflector-simple >/dev/null 2>&1 +if ! askYesNoQuestion "update" "Setup Assistant" "update" "Update the system? (recommended!)"; then + alacritty -e sudo pacman "-Syyu" fi -if ! yad \ - --image='update' \ - --title="Setup Assistant" \ - --window-icon='update' \ - --geometry=700x100 \ - --button=No:0 \ - --button=Yes:1 \ - --text-align=center \ - --center \ - --text "Update the system? (recommended!)"; then - alacritty -e sudo pacman "-Syyu" +if ! askYesNoQuestion "update" "Setup Assistant" "update" "Upgrade to Ultimate? (You can select which apps you want!)"; then + upgrade2ultimate fi - -if ! yad \ - --image='pamac' \ - --title="Setup Assistant" \ - --window-icon='update' \ - --geometry=700x100 \ - --button=No:0 \ - --button=Yes:1 \ - --text-align=center \ - --center \ - --text "Upgrade to Ultimate? (You can select which apps you want!)"; then - upgrade2ultimate -fi - diff --git a/usr/lib/setup-assistant/apply.sh b/usr/lib/setup-assistant/apply.sh index f0a6bb1..a1724e1 100755 --- a/usr/lib/setup-assistant/apply.sh +++ b/usr/lib/setup-assistant/apply.sh @@ -1,22 +1,21 @@ #!/bin/bash -if [ -e "/tmp/setup-assistant/prepare.sh" ]; then +if [ -e "$1" ]; then echo "Running pre-installation stuff.." echo "" - sudo sh /tmp/setup-assistant/prepare.sh + sudo bash - <$1 fi -cat /tmp/setup-assistant/pkgs.txt | sed '/^$/d;s/[[:blank:]]//g' > /tmp/setup-assistant/pkgs-install.txt echo "" echo "Installing packages.." echo "" -sudo pacman --needed -S - < /tmp/setup-assistant/pkgs-install.txt +sudo pacman --needed -S $(cat - <$2) -if [ -e "/tmp/setup-assistant/setup_root.sh" ]; then +if [ -e "$3" ]; then echo "" echo "Enabling services.." echo "" - sh /tmp/setup-assistant/setup_root.sh + sudo bash - <$3 fi echo "" diff --git a/usr/lib/setup-assistant/audio.txt b/usr/lib/setup-assistant/audio.txt index 7236b00..6a0ab7b 100644 --- a/usr/lib/setup-assistant/audio.txt +++ b/usr/lib/setup-assistant/audio.txt @@ -1,28 +1,39 @@ true +olivia Olivia (Audio player with YouTube support) false +audacious Audacious false +cantata Cantata (Frontend for mpd) false +kwave Kwave (Sound editor by KDE) false +lollypop Lollypop (GNOME music player) false +audacity Audacity (Record/edit audio) false +ardour Ardour (proffesional-grade audio workstation) false +lmms LMMS (The Linux MultiMedia Studio) false +mixxx Mixxx (Digital DJ'ing) false +musescore MuseScore (Sheet music notation) false +rosegarden Rosegarden (MIDI/audio sequencer) false +strawberry Strawberry Player (aimed at collectors) false +bitwig-studio Bitwig Studio (Digital audio workstation) -false -None of them \ No newline at end of file diff --git a/usr/lib/setup-assistant/browsers.txt b/usr/lib/setup-assistant/browsers.txt index a4e3d81..3a0557d 100644 --- a/usr/lib/setup-assistant/browsers.txt +++ b/usr/lib/setup-assistant/browsers.txt @@ -1,20 +1,24 @@ -true -Firefox (recommended) false +chromium Chromium false +vivaldi vivaldi-ffmpeg-codecs Vivaldi false +opera opera-ffmpeg-codecs Opera false +torbrowser-launcher Tor Browser (The Onion Router) false +otter-browser Otter Browser false +brave Brave (Based on Chromium + privacy stuff) false +falkon Falkon (KDE browser) false +ungoogled-chromium Ungoogled Chromium -false -None of them diff --git a/usr/lib/setup-assistant/communication.txt b/usr/lib/setup-assistant/communication.txt index 9990573..00a7c4f 100644 --- a/usr/lib/setup-assistant/communication.txt +++ b/usr/lib/setup-assistant/communication.txt @@ -1,24 +1,33 @@ true +telegram-desktop Telegram Desktop false +discord Discord false +element-desktop Element (Matrix client) false +wire-desktop Wire (E2EE messenger) false +signal-desktop Signal Desktop false +jitsi-meet Jitsi-Meet (Open source webconferencing) false +zoom Zoom (Proprietary webconferencing) false +skypeforlinux-stable-bin Skype false +slack-desktop Slack (Messenger) false +whatsapp-nativefier Whatsapp (nativefier) false +mumble Mumble (Open source Teamspeak clone) -false -None of them \ No newline at end of file diff --git a/usr/lib/setup-assistant/development.txt b/usr/lib/setup-assistant/development.txt index 814a76f..a81c844 100644 --- a/usr/lib/setup-assistant/development.txt +++ b/usr/lib/setup-assistant/development.txt @@ -1,24 +1,30 @@ true +code Visual Studio Code false +github-desktop-bin GitHub Desktop false +emacs GNU Emacs false +atom Atom false +intellij-idea-community-edition IntelliJ-IDEA (Community Edition) false +pycharm-community-edition PyCharm (Community Edition) false +android-studio android-studio-launcher Android Studio false +podman-docker podman-compose crun Podman (Docker, usable with docker commands) false -BlackArch Repository (Pentesting repo) -false +plasma-sdk Plasma SDK false +qtcreator QtCreator -false -None of them \ No newline at end of file diff --git a/usr/lib/setup-assistant/graphics.txt b/usr/lib/setup-assistant/graphics.txt index 0cd1c3d..e857b10 100644 --- a/usr/lib/setup-assistant/graphics.txt +++ b/usr/lib/setup-assistant/graphics.txt @@ -1,26 +1,36 @@ true +gimp GIMP (Advanced image manipulation program) false +krita krita-plugin-gmic opencolorio Krita (Paint application by KDE) false +kolourpaint Kolourpaint (Paint application) false +digikam Digikam (Photo management app) false +inkscape Inkscape (Vector graphics) false +blender Blender (full featured 3D creation suite) false +pencil2d Pencil 2D (2D handdrawn animations) false +synfigstudio Synfig Studio (2D vector animation) false +darktable DarkTable (Organize and develop raw images) false +fontforge FontForge (Outline and font editor) false +mypaint MyPaint (Digital painting) false +imagemagick ImageMagick (Edit bmp and svg images) -false -None of them \ No newline at end of file diff --git a/usr/lib/setup-assistant/internet.txt b/usr/lib/setup-assistant/internet.txt index dd9f180..4391b08 100644 --- a/usr/lib/setup-assistant/internet.txt +++ b/usr/lib/setup-assistant/internet.txt @@ -1,30 +1,42 @@ true +nextcloud-client Nextcloud-client (Use our Garuda Cloud to sync dotfiles) true +firefox-extension-bitwarden Firefox Bitwarden extension (password manager) true +xdman Xtreme Download Manager true +firefox-extension-xdm-browser-monitor Firefox XDM extension (download manager) false +cockpit cockpit-dashboard cockpit-machines Cockpit (Access some system settings at localhost:9090) false +syncthing-gtk Syncthing-GTK (sync files between devices) false +remmina Remmina (Remote access client) false +filezilla Filezilla (FTP client) false +putty Putty (SSH/Telnet client) false +nitroshare Nitroshare (Network file sharing via LAN) false +jdownloader2 Jdownloader2 (Advanced download manager) false +deluge-gtk Deluge (GTK torrent client) false +qbittorrent Qbittorrent (QT torrent client) false +streamlink-twitch-gui Twitch GUI -false -None of them diff --git a/usr/lib/setup-assistant/mail.txt b/usr/lib/setup-assistant/mail.txt index d9128fa..c81c90f 100644 --- a/usr/lib/setup-assistant/mail.txt +++ b/usr/lib/setup-assistant/mail.txt @@ -1,12 +1,15 @@ true +thunderbird Thunderbird false +kmail Kmail (KDE mail client) false +geary Geary (GNOME mail client) false +trojita Trojita (Qt mail client) false +mailspring Mailspring -false -No mail client \ No newline at end of file diff --git a/usr/lib/setup-assistant/multimedia.txt b/usr/lib/setup-assistant/multimedia.txt index cab21ad..f083648 100644 --- a/usr/lib/setup-assistant/multimedia.txt +++ b/usr/lib/setup-assistant/multimedia.txt @@ -1,38 +1,54 @@ false +converseen Converseen (Image converter) false +handbrake Handbrake (Video format transcoder) false +mystiq Mystiq (QT Video converter) false +transmageddon Transmageddon (GTK Video converter) false -Soundkonvertor (Audio converter) +soundconverter +Soundconvertor (Audio converter) false +stremio Stremio (One-stop hub for video content aggregation) false +kodi kodi-platform kodi-eventclients Kodi (Entertainment hub) false +mediaelch Mediaelch (Media manager for Kodi) false +plex-media-player Plex desktop client false +hypnotix Hypnotix (An IPTV app for watching live tv) false +subtitlecomposer Subtitlecomposer (A KDE subtitle editor) false +kid3 Kid3 (KDE Tag editor) false +easytag Easytag (Audio tag editor) false +k3b cdparanoia cdrdao dvd+rw-tools emovix transcode vcdimager cdrtools K3B (CD burning application for KDE) false +brasero BRASERO (CD burning application for GTK) false +xfburn XFBURN (CD burning application for XFCE) false +variety Variety (Wallpaper changer) false +conky-lua-nv conky-manager Conky (System monitor) -false -None of them diff --git a/usr/lib/setup-assistant/office.txt b/usr/lib/setup-assistant/office.txt index 7a3bfba..b22c7b0 100644 --- a/usr/lib/setup-assistant/office.txt +++ b/usr/lib/setup-assistant/office.txt @@ -1,22 +1,30 @@ true +libreoffice-fresh libmythes LibreOffice Fresh (Recommended, full featured office suite) false +libreoffice-still libmythes LibreOffice Still (The same than above, more stable version) false +onlyoffice-bin OnlyOffice (Aims to be compatible with Microsoft Office) false +wps-office wps-office-mime ttf-wps-fonts WPS Office false +ms-office-online Microsoft Office (Online wrapper) false +freeoffice Free Office false +yozo-office yozo-office-fonts Yozo Office false -Calligra Suite +calligra +Calligra Suite false -Abiword (Simple wordprocessor, recommended for simple writing) +abiword +Abiword (Simple wordprocessor, recommended for simple writing) false +joplin-desktop-electron Joplin (Is able to sync notes to Garuda cloud) -false -None of them diff --git a/usr/lib/setup-assistant/video.txt b/usr/lib/setup-assistant/video.txt index c5e4bf4..871cf94 100644 --- a/usr/lib/setup-assistant/video.txt +++ b/usr/lib/setup-assistant/video.txt @@ -1,18 +1,24 @@ true +kdenlive movit sox opus-tools frei0r-plugins Kdenlive (Video editor by KDE) false +shotcut Shotcut (Qt-based video editor) false +pitivi frei0r-plugins Pitivi false +openshot Openshot false +obs-studio OBS Studio (Video recording/streaming) false +smplayer smplayer-skins smplayer-themes SMPlayer (Build-in codecs, high compatability video player) false +vlc Vlc false +baka-mplayer Baka-Mplayer (libmpv and Qt based video player) -false -None of them diff --git a/usr/lib/setup-assistant/virtualization.txt b/usr/lib/setup-assistant/virtualization.txt index a5d5873..f250594 100644 --- a/usr/lib/setup-assistant/virtualization.txt +++ b/usr/lib/setup-assistant/virtualization.txt @@ -1,6 +1,9 @@ false +virtualbox-meta Virtualbox (most likely easier for beginners) false -Virt-manager +gnome-boxes +GNOME Boxes (Easy KVM) false -None of them +virt-manager-meta +Virt-manager