diff --git a/Containerfile b/Containerfile index d3bb7641..3472a11d 100644 --- a/Containerfile +++ b/Containerfile @@ -71,7 +71,7 @@ RUN rpm-ostree install \ yad # Configure KDE & GNOME -RUN if grep -v "gnome" <<< "${IMAGE_NAME}"; then \ +RUN if grep -qv "gnome" <<< "${IMAGE_NAME}"; then \ rpm-ostree override replace \ --experimental \ --from repo=copr:copr.fedorainfracloud.org:kylegospo:gnome-vrr \ @@ -100,14 +100,15 @@ RUN if grep -v "gnome" <<< "${IMAGE_NAME}"; then \ gnome-shell-extension-user-theme \ gnome-shell-extension-appindicator \ gnome-shell-extension-gsconnect \ - gnome-shell-extension-system76-scheduler && \ + gnome-shell-extension-system76-scheduler \ + openssh-askpass && \ rpm-ostree override remove \ gnome-tour \ yelp \ ; fi # Install ROCM on non-Nvidia images -RUN if grep -v "nvidia" <<< "${IMAGE_NAME}"; then \ +RUN if grep -qv "nvidia" <<< "${IMAGE_NAME}"; then \ rpm-ostree install \ rocm-hip \ rocm-opencl \ @@ -144,7 +145,7 @@ RUN rm /usr/share/applications/shredder.desktop && \ systemctl --global enable ublue-update.timer && \ systemctl enable displaylink.service && \ systemctl enable input-remapper.service && \ - if grep "gnome" <<< "${IMAGE_NAME}"; then \ + if grep -q "gnome" <<< "${IMAGE_NAME}"; then \ systemctl disable gdm.service && \ systemctl enable sddm.service && \ rm /usr/share/applications/yad-icon-browser.desktop \ @@ -187,7 +188,7 @@ RUN rpm-ostree install \ RUN rpm-ostree override remove \ ddccontrol \ ddccontrol-gtk && \ - if grep -v "gnome" <<< "${IMAGE_NAME}"; then \ + if grep -qv "gnome" <<< "${IMAGE_NAME}"; then \ rpm-ostree override remove \ steamdeck-kde-presets-desktop \ ; fi @@ -208,7 +209,7 @@ RUN rpm-ostree override replace \ udisks2 # Configure KDE & GNOME -RUN if grep -v "gnome" <<< "${IMAGE_NAME}"; then \ +RUN if grep -qv "gnome" <<< "${IMAGE_NAME}"; then \ rpm-ostree override remove \ krfb \ krfb-libs && \ @@ -260,10 +261,10 @@ RUN rm /usr/share/applications/winetricks.desktop && \ sed -i 's@enabled=1@enabled=0@g' /etc/yum.repos.d/_copr_kylegospo-wallpaper-engine-kde-plugin.repo && \ sed -i 's@enabled=1@enabled=0@g' /etc/yum.repos.d/_copr_ycollet-audinux.repo && \ mv /etc/sddm.conf /etc/sddm.conf.d/steamos.conf && \ - if grep "gnome" <<< "${IMAGE_NAME}"; then \ + if grep -q "gnome" <<< "${IMAGE_NAME}"; then \ systemctl enable gnome-autologin.service \ ; fi && \ - if grep -v "gnome" <<< "${IMAGE_NAME}"; then \ + if grep -qv "gnome" <<< "${IMAGE_NAME}"; then \ systemctl enable plasma-autologin.service \ ; fi && \ systemctl enable jupiter-fan-control.service && \ diff --git a/system_files/deck/shared/usr/share/ublue-os/firstboot/launcher/autostart.sh b/system_files/deck/shared/usr/share/ublue-os/firstboot/launcher/autostart.sh index e595ed30..6e6ea560 100755 --- a/system_files/deck/shared/usr/share/ublue-os/firstboot/launcher/autostart.sh +++ b/system_files/deck/shared/usr/share/ublue-os/firstboot/launcher/autostart.sh @@ -1,5 +1,8 @@ #!/usr/bin/env bash +# Source Bazzite defaults +source /etc/default/bazzite + # Simply launches the "yafti" GUI with the uBlue image's configuration. /usr/bin/yafti /usr/share/ublue-os/firstboot/yafti.yml diff --git a/system_files/deck/shared/usr/share/ublue-os/firstboot/yafti.yml b/system_files/deck/shared/usr/share/ublue-os/firstboot/yafti.yml index 9a8e3fa0..2d8d0532 100644 --- a/system_files/deck/shared/usr/share/ublue-os/firstboot/yafti.yml +++ b/system_files/deck/shared/usr/share/ublue-os/firstboot/yafti.yml @@ -47,25 +47,11 @@ screens: default: true packages: - Enable Gamescope Autologin: just --unstable enable-gamescope-autologin - Gradience: - description: Adds Valve-inspired themes to Gradience - condition: - run: grep "gnome" <<< $(rpm-ostree status) - default: true - packages: - - Setup Gradience: just --unstable setup-gradience Greenlight: description: A utility for xCloud and xHome streaming default: false packages: - Retrieve Greenlight: just --unstable get-greenlight - GSConnect: - condition: - run: grep "gnome" <<< $(rpm-ostree status) - description: A KDE connect implementation for GNOME - default: true - packages: - - Enable GSConnect: just --unstable enable-gsconnect Hide GRUB Menu: description: | NOTE: Press the escape key before boot to show the menu @@ -118,19 +104,12 @@ screens: default: true packages: - Enable System76 Scheduler: just --unstable enable-system76-scheduler - Wallpaper Engine: - description: Enables Wallpaper Engine - condition: - run: grep -v "gnome" <<< $(rpm-ostree status) - default: true - packages: - - Enable Wallpaper Engine: just --unstable enable-wallpaper-engine can-we-modify-your-flatpaks: source: yafti.screen.consent values: title: Setting up Flathub condition: - run: flatpak remotes --system | grep fedora + run: flatpak remotes --system | grep -q fedora description: | WARNING: This will modify your Flatpaks if you are rebasing! If you do not want to do this exit the installer. actions: @@ -252,18 +231,25 @@ screens: - Bitwarden: com.bitwarden.desktop - Calibre: com.calibre_ebook.calibre - Fedora Media Writer: org.fedoraproject.MediaWriter - - Flatseal Permissions Manager: com.github.tchx84.Flatseal - KeePassXC: org.keepassxc.KeePassXC - OpenRGB: org.openrgb.OpenRGB - qBittorrent: org.qbittorrent.qBittorrent - Syncthing: com.github.zocker_160.SyncThingy - VLC: org.videolan.VLC + setup-desktop-environment: + source: yafti.screen.consent + values: + title: Setting up your Desktop Environment + description: | + Configures your desktop environment, including needed plugins/extensions. + actions: + - run: just --unstable setup-desktop-environment theme: source: yafti.screen.title values: title: "GNOME Theme" condition: - run: grep "gnome" <<< $(rpm-ostree status) + run: [[ ${BASE_IMAGE_NAME} == 'silverblue' ]] links: - "Vapor Theme": run: just --unstable enable-vapor-theme diff --git a/system_files/deck/shared/usr/share/ublue-os/just/custom.just b/system_files/deck/shared/usr/share/ublue-os/just/custom.just index bce1ded0..869626d8 100644 --- a/system_files/deck/shared/usr/share/ublue-os/just/custom.just +++ b/system_files/deck/shared/usr/share/ublue-os/just/custom.just @@ -1,18 +1,20 @@ enable-gamescope-autologin: #!/usr/bin/env bash - if grep "gnome" <<< $(rpm-ostree status); then + source /etc/default/bazzite + if [[ ${BASE_IMAGE_NAME} == 'silverblue' ]]; then systemctl disable --now gnome-autologin - else + elif [[ ${BASE_IMAGE_NAME} == 'kinoite' ]]; then systemctl disable --now plasma-autologin fi systemctl enable --now gamescope-autologin enable-desktop-autologin: #!/usr/bin/env bash + source /etc/default/bazzite systemctl disable --now gamescope-autologin - if grep "gnome" <<< $(rpm-ostree status); then + if [[ ${BASE_IMAGE_NAME} == 'silverblue' ]]; then systemctl enable --now gnome-autologin - else + elif [[ ${BASE_IMAGE_NAME} == 'kinoite' ]]; then systemctl enable --now plasma-autologin fi @@ -44,7 +46,8 @@ get-steamcmd: install-extensions-cli: #!/usr/bin/env bash - if grep "gnome" <<< $(rpm-ostree status); then + source /etc/default/bazzite + if [[ ${BASE_IMAGE_NAME} == 'silverblue' ]]; then pip install --upgrade gnome-extensions-cli else echo "This is only supported under GNOME." @@ -52,17 +55,18 @@ install-extensions-cli: enable-system76-scheduler: #!/usr/bin/env bash - echo 'Installing System76-Scheduler plugin for KDE...' - if grep "gnome" <<< $(rpm-ostree status); then + source /etc/default/bazzite + if [[ ${BASE_IMAGE_NAME} == 'kinoite' ]]; then + echo 'Installing System76-Scheduler plugin for KDE...' git clone https://github.com/maxiberta/kwin-system76-scheduler-integration.git --depth 1 /tmp/kwin-system76-scheduler-integration kpackagetool5 --type=KWin/Script -i /tmp/kwin-system76-scheduler-integration systemctl --user enable --now com.system76.Scheduler.dbusproxy.service systemctl enable --now com.system76.Scheduler.service kcmshell5 kcm_kwin_scripts rm -rf /tmp/kwin-system76-scheduler-integration - else - gsettings set org.gnome.shell enabled-extensions ['appindicatorsupport@rgcjonas.gmail.com', 'gsconnect@andyholmes.github.io', 's76-scheduler@mattjakeman.com', 'tofumenu@tofu', 'user-theme@gnome-shell-extensions.gcampax.github.com'] - gsettings set org.gnome.shell.extensions.fedora-menu menu-button-icon-size 20 + elif [[ ${BASE_IMAGE_NAME} == 'silverblue' ]]; then + echo 'Enabling System76-Scheduler GNOME extension...' + gnome-shell-extension-cl -e s76-scheduler@mattjakeman.com fi install-nix: @@ -83,29 +87,31 @@ get-boilr: -O ~/Desktop/BoilR chmod +x ~/Desktop/BoilR -enable-wallpaper-engine: +setup-desktop-environment: #!/usr/bin/env bash - if grep -v "gnome" <<< $(rpm-ostree status); then + source /etc/default/bazzite + if [[ ${BASE_IMAGE_NAME} == 'silverblue' ]]; then + echo 'Configuring GNOME extensions...' + gnome-shell-extension-cl -d background-logo@fedorahosted.org + gnome-shell-extension-cl -e appindicatorsupport@rgcjonas.gmail.com + gnome-shell-extension-cl -e gsconnect@andyholmes.github.io + gnome-shell-extension-cl -e tofumenu@tofu + gsettings set org.gnome.shell.extensions.fedora-menu menu-button-icon-size 20 + mkdir -p $HOME/.config/presets/user/ + gradience-cli import -p /usr/share/ublue-os/bazzite/themes/vapor.json + gradience-cli import -p /usr/share/ublue-os/bazzite/themes/vgui2.json + elif [[ ${BASE_IMAGE_NAME} == 'kinoite' ]]; then echo 'Installing Wallpaper Engine Plugin for KDE...' git clone https://github.com/catsout/wallpaper-engine-kde-plugin.git --depth 1 /tmp/wallpaper-engine-kde-plugin plasmapkg2 -i /tmp/wallpaper-engine-kde-plugin/plugin rm -rf /tmp/wallpaper-engine-kde-plugin - else - echo "This is only supported under KDE." - fi - -setup-gradience: - #!/usr/bin/env bash - if grep "gnome" <<< $(rpm-ostree status); then - gradience-cli import -p /usr/share/ublue-os/bazzite/themes/vapor.json - gradience-cli import -p /usr/share/ublue-os/bazzite/themes/vgui2.json - else - echo "This is only supported under GNOME." fi enable-vapor-theme: #!/usr/bin/env bash - if grep "gnome" <<< $(rpm-ostree status); then + source /etc/default/bazzite + if [[ ${BASE_IMAGE_NAME} == 'silverblue' ]]; then + gnome-shell-extension-cl -e user-theme@gnome-shell-extensions.gcampax.github.com gsettings set org.gnome.desktop.wm.preferences button-layout appmenu:minimize,maximize,close gsettings set org.gnome.desktop.interface color-scheme prefer-dark gsettings set org.gnome.desktop.interface gtk-theme adw-gtk3-dark @@ -119,7 +125,9 @@ enable-vapor-theme: enable-vgui2-theme: #!/usr/bin/env bash - if grep "gnome" <<< $(rpm-ostree status); then + source /etc/default/bazzite + if [[ ${BASE_IMAGE_NAME} == 'silverblue' ]]; then + gnome-shell-extension-cl -e user-theme@gnome-shell-extensions.gcampax.github.com gsettings set org.gnome.desktop.wm.preferences button-layout appmenu:minimize,maximize,close gsettings set org.gnome.desktop.interface color-scheme prefer-dark gsettings set org.gnome.desktop.interface gtk-theme adw-gtk3-dark @@ -134,7 +142,7 @@ enable-vgui2-theme: deckswap-on: #!/usr/bin/env bash STATUS=$(systemctl status deckswap.service) - if grep 'inactive' <<< ${STATUS}; then + if grep -q 'inactive' <<< ${STATUS}; then systemctl enable deckswap.service echo 'deckswap enabled. Please reboot.' else @@ -144,7 +152,7 @@ deckswap-on: deckswap-off: #!/usr/bin/env bash STATUS=$(systemctl status deckswap.service) - if grep -v 'inactive' <<< ${STATUS}; then + if grep -qv 'inactive' <<< ${STATUS}; then systemctl disable deckswap.service echo 'deckswap disabled. Please reboot.' else @@ -154,7 +162,7 @@ deckswap-off: resize-deckswap: #!/usr/bin/env bash CONFIG='/etc/default/deckswap' - CURRENT_SIZE=$(cat "${CONFIG}" | grep "SWAP_SIZE" | sed 's/SWAP_SIZE=//g') + CURRENT_SIZE=$(cat "${CONFIG}" | grep -q "SWAP_SIZE" | sed 's/SWAP_SIZE=//g') echo 'Current size: '${CURRENT_SIZE} read -p 'Enter new size (1-16) in gigabytes (1G): ' NEW_SIZE if [ -z "${NEW_SIZE//[0-9]}" ]; then @@ -181,7 +189,7 @@ set-btrfs-flags: #!/usr/bin/env bash echo 'Configuring drive mount parameters...' sudo sed -i 's/compress=zstd:1/noatime,lazytime,commit=120,compress-force=zstd:1,space_cache=v2,discard=async/g' /etc/fstab - if grep '64GB' <<< $(lsblk -o MODEL); then + if grep -q '64GB' <<< $(lsblk -o MODEL); then echo 'Increasing compression for detected 64GB eMMC' sudo sed -i 's/compress-force=zstd:1/compress-force=zstd:3/g' /etc/fstab fi @@ -192,7 +200,7 @@ switch-to-ext4: zram-on: #!/usr/bin/env bash KARGS=$(rpm-ostree kargs) - if grep 'zram' <<< ${KARGS}; then + if grep -q 'zram' <<< ${KARGS}; then rpm-ostree kargs --delete=zram echo 'ZRAM enabled. Please reboot.' else @@ -202,7 +210,7 @@ zram-on: zram-off: #!/usr/bin/env bash KARGS=$(rpm-ostree kargs) - if grep -v 'zram' <<< ${KARGS}; then + if grep -qv 'zram' <<< ${KARGS}; then rpm-ostree kargs --append=zram=0 echo 'ZRAM disabled. Please reboot.' else @@ -212,8 +220,8 @@ zram-off: resize-zram: #!/usr/bin/env bash CONFIG='/etc/systemd/zram-generator.conf' - if grep "zram-size" <<< $(cat ${CONFIG}); then - CURRENT_SIZE=$(cat "${CONFIG}" | grep "zram-size" | sed 's/zram-size=//g') + if grep -q "zram-size" <<< $(cat ${CONFIG}); then + CURRENT_SIZE=$(cat "${CONFIG}" | grep -q "zram-size" | sed 's/zram-size=//g') else CURRENT_SIZE=1024 fi @@ -224,7 +232,7 @@ resize-zram: NEW_SIZE=1024 fi if ((${NEW_SIZE} >= 512 && ${NEW_SIZE} <= 4096)); then - if grep "zram-size" <<< $(cat ${CONFIG}); then + if grep -q "zram-size" <<< $(cat ${CONFIG}); then sudo sed -i 's/zram-size='${CURRENT_SIZE}'/zram-size='${NEW_SIZE}'/g' ${CONFIG} else sudo -A echo "zram-size=${NEW_SIZE}" >> ${CONFIG} diff --git a/system_files/desktop/kinoite/etc/flatpak/install b/system_files/desktop/kinoite/etc/flatpak/install index 4b4e3ff3..51fbffb1 100644 --- a/system_files/desktop/kinoite/etc/flatpak/install +++ b/system_files/desktop/kinoite/etc/flatpak/install @@ -2,3 +2,4 @@ net.davidotek.pupgui2 org.freedesktop.Platform.VulkanLayer.MangoHud//22.08 org.freedesktop.Platform.VulkanLayer.vkBasalt//22.08 org.mozilla.firefox +com.github.tchx84.Flatseal diff --git a/system_files/desktop/shared/etc/profile.d/askpass.sh b/system_files/desktop/shared/etc/profile.d/askpass.sh index 9c663f19..a5dcfbb8 100755 --- a/system_files/desktop/shared/etc/profile.d/askpass.sh +++ b/system_files/desktop/shared/etc/profile.d/askpass.sh @@ -1,2 +1,8 @@ -SUDO_ASKPASS='/usr/bin/ksshaskpass' +#!/usr/bin/env bash +source /etc/default/bazzite +if [[ ${BASE_IMAGE_NAME} == 'kinoite' ]]; then + SUDO_ASKPASS='/usr/bin/ksshaskpass' +elif [[ ${BASE_IMAGE_NAME} == 'silverblue' ]]; then + SUDO_ASKPASS='/usr/libexec/openssh/gnome-ssh-askpass' +fi export SUDO_ASKPASS diff --git a/system_files/desktop/shared/usr/bin/ublue-flatpak-system-install b/system_files/desktop/shared/usr/bin/ublue-flatpak-system-install index 28855e7b..e6d82ec4 100755 --- a/system_files/desktop/shared/usr/bin/ublue-flatpak-system-install +++ b/system_files/desktop/shared/usr/bin/ublue-flatpak-system-install @@ -1,4 +1,5 @@ #!/usr/bin/env bash +source /etc/default/bazzite if [[ -f '/etc/flatpak/install' ]]; then cp -r /etc/flatpak/flathub/* /var/lib/flatpak/repo/refs/remotes/flathub @@ -15,7 +16,7 @@ if [[ -f '/etc/flatpak/remove' ]]; then fi if [[ -f '/etc/flatpak/deck' ]]; then - if grep "deck" <<< $(rpm-ostree status); then + if [[ ${IMAGE_NAME} == *'deck'* ]]; then cat /etc/flatpak/deck | while read line; do flatpak install --system --noninteractive --no-pull flathub $line done && cat /etc/flatpak/deck >> /etc/flatpak/installed diff --git a/system_files/desktop/shared/usr/share/ublue-os/firstboot/launcher/autostart.sh b/system_files/desktop/shared/usr/share/ublue-os/firstboot/launcher/autostart.sh index 7576023a..5c3cf2b7 100755 --- a/system_files/desktop/shared/usr/share/ublue-os/firstboot/launcher/autostart.sh +++ b/system_files/desktop/shared/usr/share/ublue-os/firstboot/launcher/autostart.sh @@ -1,4 +1,7 @@ #!/usr/bin/env bash +# Source Bazzite defaults +source /etc/default/bazzite + # Simply launches the "yafti" GUI with the uBlue image's configuration. /usr/bin/yafti /usr/share/ublue-os/firstboot/yafti.yml diff --git a/system_files/desktop/shared/usr/share/ublue-os/firstboot/yafti.yml b/system_files/desktop/shared/usr/share/ublue-os/firstboot/yafti.yml index d2a1e9f8..98fb264b 100644 --- a/system_files/desktop/shared/usr/share/ublue-os/firstboot/yafti.yml +++ b/system_files/desktop/shared/usr/share/ublue-os/firstboot/yafti.yml @@ -9,6 +9,37 @@ screens: icon: "/usr/share/ublue-os/bazzite/logo.svg" description: | Configure your system to get started + configure-bazzite-arch: + source: yafti.screen.package + values: + title: Configure Bazzite Arch + condition: + run: grep -qv "bazzite-arch" <<< $(distrobox list) + show_terminal: true + package_manager: yafti.plugin.run + groups: + Install Bazzite Arch: + description: This will install an Arch distrobox configured for gaming + default: true + packages: + - Install Bazzite Arch: just --unstable install-bazzite-arch + Export Launchers: + description: This exports Steam and Lutris + default: true + packages: + - Export Steam: distrobox-enter -n bazzite-arch -- ' distrobox-export --app steam' + - Export Lutris: distrobox-enter -n bazzite-arch -- ' distrobox-export --app lutris' + Export Utilities: + description: This exports SteamCMD and protontricks + default: true + packages: + - Export SteamCMD: just --unstable export-steamcmd + - Export Protontricks: distrobox-enter -n bazzite-arch -- ' distrobox-export --app protontricks' + Autostart Steam: + description: Starts Steam after logging in + default: true + packages: + - Autostart Steam: cp ~/.local/share/applications/bazzite-arch-steam.desktop ~/.config/autostart/bazzite-arch-steam-silent.desktop && sed -i 's@/usr/bin/steam-runtime %U@/usr/bin/steam-runtime -silent %U@g' ~/.config/autostart/bazzite-arch-steam-silent.desktop configure-bazzite: source: yafti.screen.package values: @@ -16,37 +47,11 @@ screens: show_terminal: true package_manager: yafti.plugin.run groups: - Bazzite Arch Distrobox: - description: This will install an Arch distrobox configured for gaming. Steam and Lutris will then be exported. - default: true - condition: - run: distrobox list | grep -v bazzite-arch - packages: - - Install Bazzite Arch: just --unstable install-bazzite-arch - - Export Steam: distrobox-enter -n bazzite-arch -- ' distrobox-export --app steam' - - Export SteamCMD: just --unstable export-steamcmd - - Export Lutris: distrobox-enter -n bazzite-arch -- ' distrobox-export --app lutris' - - Export Protontricks: distrobox-enter -n bazzite-arch -- ' distrobox-export --app protontricks' - - Autostart Steam: cp ~/.local/share/applications/bazzite-arch-steam.desktop ~/.config/autostart/bazzite-arch-steam-silent.desktop && sed -i 's@/usr/bin/steam-runtime %U@/usr/bin/steam-runtime -silent %U@g' ~/.config/autostart/bazzite-arch-steam-silent.desktop Automatic Duplicate File Removal: description: Flattens duplicate files to take up no more space than a single copy, a considerable space savings for wine prefixes and compatdata default: true packages: - Enable Duperemove: systemctl enable --now duperemove-weekly@$(systemd-escape $HOME).timer - CoreCtrl: - description: AMD GPU Overclocking - condition: - run: grep -v "nvidia" <<< $(rpm-ostree status) - default: false - packages: - - Install CoreCtrl: just --unstable install-corectrl - Gradience: - description: Adds Valve-inspired themes to Gradience - condition: - run: grep "gnome" <<< $(rpm-ostree status) - default: true - packages: - - Setup Gradience: just --unstable setup-gradience Greenlight: description: A utility for xCloud and xHome streaming default: false @@ -78,31 +83,52 @@ screens: default: true packages: - Set SteamOS BTRFS mount flags: sudo -A just --unstable set-btrfs-flags - Supergfxctl: - condition: - run: grep "nvidia" <<< $(rpm-ostree status) - description: A utility for Nvidia GPU switching - default: false - packages: - - Enable supergfxctl: just --unstable enable-supergfxctl System76 Scheduler: description: Enables System76 scheduler default: true packages: - Enable System76 Scheduler: just --unstable enable-system76-scheduler - Wallpaper Engine: - description: Enables Wallpaper Engine + amd-additions: + source: yafti.screen.package + values: + title: AMD Additions + condition: + run: [[ ${IMAGE_FLAVOR} == 'main' ]] + show_terminal: true + package_manager: yafti.plugin.run + groups: + CoreCtrl: + description: AMD GPU Overclocking condition: - run: grep -v "gnome" <<< $(rpm-ostree status) - default: true + run: grep -qv "nvidia" <<< $(cat /etc/default/bazzite) + default: false packages: - - Enable Wallpaper Engine: just --unstable enable-wallpaper-engine + - Install CoreCtrl: just --unstable install-corectrl + nvidia-additions: + source: yafti.screen.package + values: + title: Nvidia Additions + condition: + run: [[ ${IMAGE_FLAVOR} == 'nvidia' ]] + show_terminal: true + package_manager: yafti.plugin.run + groups: + GreenWithEnvy: + description: Nvidia GPU Overclocking + default: false + packages: + - Install GreenWithEnvy: flatpak install --user --noninteractive com.leinardi.gwe + Supergfxctl: + description: A utility for Nvidia GPU switching + default: false + packages: + - Enable Supergfxctl: just --unstable enable-supergfxctl can-we-modify-your-flatpaks: source: yafti.screen.consent values: title: Setting up Flathub condition: - run: flatpak remotes --system | grep fedora + run: flatpak remotes --system | grep -q fedora description: | WARNING: This will modify your Flatpaks if you are rebasing! If you do not want to do this exit the installer. actions: @@ -225,20 +251,26 @@ screens: - Calibre: com.calibre_ebook.calibre - Easy Effects: com.github.wwmm.easyeffects - Fedora Media Writer: org.fedoraproject.MediaWriter - - Flatseal Permissions Manager: com.github.tchx84.Flatseal - - GreenWithEnvy (Nvidia GPU Overclocking): com.leinardi.gwe - JamesDSP: me.timschneeberger.jdsp4linux - KeePassXC: org.keepassxc.KeePassXC - OpenRGB: org.openrgb.OpenRGB - qBittorrent: org.qbittorrent.qBittorrent - Syncthing: com.github.zocker_160.SyncThingy - VLC: org.videolan.VLC + setup-desktop-environment: + source: yafti.screen.consent + values: + title: Setting up your Desktop Environment + description: | + Configures your desktop environment, including needed plugins/extensions. + actions: + - run: just --unstable setup-desktop-environment theme: source: yafti.screen.title values: title: "GNOME Theme" condition: - run: grep "gnome" <<< $(rpm-ostree status) + run: [[ ${BASE_IMAGE_NAME} == 'silverblue' ]] links: - "Vapor Theme": run: just --unstable enable-vapor-theme diff --git a/system_files/desktop/shared/usr/share/ublue-os/just/custom.just b/system_files/desktop/shared/usr/share/ublue-os/just/custom.just index 15281e9c..b550dbe5 100644 --- a/system_files/desktop/shared/usr/share/ublue-os/just/custom.just +++ b/system_files/desktop/shared/usr/share/ublue-os/just/custom.just @@ -1,7 +1,7 @@ install-bazzite-arch: #!/usr/bin/env bash - KARGS=$(rpm-ostree kargs) - if grep 'nvidia' <<< ${KARGS}; then + source /etc/default/bazzite + if [[ ${IMAGE_FLAVOR} == 'nvidia' ]]; then echo 'Installing Bazzite Arch (Nvidia)...' distrobox assemble create --file /usr/share/ublue-os/distrobox/bazzite-arch-nvidia else @@ -28,9 +28,10 @@ remove-nix: enable-big-picture: #!/usr/bin/env bash - if grep "gnome" <<< $(rpm-ostree status); then + source /etc/default/bazzite + if [[ ${BASE_IMAGE_NAME} == 'silverblue' ]]; then systemctl enable --now gnome-autologin - else + elif [[ ${BASE_IMAGE_NAME} == 'kinoite' ]]; then systemctl enable --now plasma-autologin fi sed -i 's@/usr/bin/steam-runtime -silent %U@/usr/bin/steam-runtime -bigpicture %U@g' ~/.config/autostart/bazzite-arch-steam-silent.desktop @@ -43,7 +44,8 @@ get-greenlight: install-extensions-cli: #!/usr/bin/env bash - if grep "gnome" <<< $(rpm-ostree status); then + source /etc/default/bazzite + if [[ ${BASE_IMAGE_NAME} == 'silverblue' ]]; then pip install --upgrade gnome-extensions-cli else echo "This is only supported under GNOME." @@ -51,51 +53,52 @@ install-extensions-cli: enable-system76-scheduler: #!/usr/bin/env bash - echo 'Installing System76-Scheduler plugin for KDE...' - if grep "gnome" <<< $(rpm-ostree status); then + source /etc/default/bazzite + if [[ ${BASE_IMAGE_NAME} == 'kinoite' ]]; then + echo 'Installing System76-Scheduler plugin for KDE...' git clone https://github.com/maxiberta/kwin-system76-scheduler-integration.git --depth 1 /tmp/kwin-system76-scheduler-integration kpackagetool5 --type=KWin/Script -i /tmp/kwin-system76-scheduler-integration systemctl --user enable --now com.system76.Scheduler.dbusproxy.service systemctl enable --now com.system76.Scheduler.service kcmshell5 kcm_kwin_scripts rm -rf /tmp/kwin-system76-scheduler-integration - else - gsettings set org.gnome.shell enabled-extensions ['appindicatorsupport@rgcjonas.gmail.com', 'gsconnect@andyholmes.github.io', 's76-scheduler@mattjakeman.com', 'tofumenu@tofu', 'user-theme@gnome-shell-extensions.gcampax.github.com'] - gsettings set org.gnome.shell.extensions.fedora-menu menu-button-icon-size 20 + elif [[ ${BASE_IMAGE_NAME} == 'silverblue' ]]; then + echo 'Enabling System76-Scheduler GNOME extension...' + gnome-shell-extension-cl -e s76-scheduler@mattjakeman.com fi enable-supergfxctl: #!/usr/bin/env bash - status=$(rpm-ostree status) - if grep "nvidia" <<< ${status}; then + source /etc/default/bazzite + if [[ ${IMAGE_FLAVOR} == 'nvidia' ]]; then systemctl enable --now supergfxd.service else echo "This requires an Nvidia image." fi -enable-wallpaper-engine: +setup-desktop-environment: #!/usr/bin/env bash - if grep -v "gnome" <<< $(rpm-ostree status); then + source /etc/default/bazzite + if [[ ${BASE_IMAGE_NAME} == 'silverblue' ]]; then + echo 'Configuring GNOME extensions...' + gnome-shell-extension-cl -d background-logo@fedorahosted.org + gnome-shell-extension-cl -e appindicatorsupport@rgcjonas.gmail.com + gnome-shell-extension-cl -e gsconnect@andyholmes.github.io + mkdir -p $HOME/.config/presets/user/ + gradience-cli import -p /usr/share/ublue-os/bazzite/themes/vapor.json + gradience-cli import -p /usr/share/ublue-os/bazzite/themes/vgui2.json + elif [[ ${BASE_IMAGE_NAME} == 'kinoite' ]]; then echo 'Installing Wallpaper Engine Plugin for KDE...' git clone https://github.com/catsout/wallpaper-engine-kde-plugin.git --depth 1 /tmp/wallpaper-engine-kde-plugin plasmapkg2 -i /tmp/wallpaper-engine-kde-plugin/plugin rm -rf /tmp/wallpaper-engine-kde-plugin - else - echo "This is only supported under KDE." - fi - -setup-gradience: - #!/usr/bin/env bash - if grep "gnome" <<< $(rpm-ostree status); then - gradience-cli import -p /usr/share/ublue-os/bazzite/themes/vapor.json - gradience-cli import -p /usr/share/ublue-os/bazzite/themes/vgui2.json - else - echo "This is only supported under GNOME." fi enable-vapor-theme: #!/usr/bin/env bash - if grep "gnome" <<< $(rpm-ostree status); then + source /etc/default/bazzite + if [[ ${BASE_IMAGE_NAME} == 'silverblue' ]]; then + gnome-shell-extension-cl -e user-theme@gnome-shell-extensions.gcampax.github.com gsettings set org.gnome.desktop.wm.preferences button-layout appmenu:minimize,maximize,close gsettings set org.gnome.desktop.interface color-scheme prefer-dark gsettings set org.gnome.desktop.interface gtk-theme adw-gtk3-dark @@ -103,13 +106,15 @@ enable-vapor-theme: gsettings set org.gnome.desktop.background picture-uri-dark file:///usr/share/backgrounds/steamdeck/Steam\ Deck\ Logo\ Default.jpg gradience-cli flatpak-overrides -e both gradience-cli apply -p /usr/share/ublue-os/bazzite/themes/vapor.json - else + else echo "This is only supported under GNOME." fi enable-vgui2-theme: #!/usr/bin/env bash - if grep "gnome" <<< $(rpm-ostree status); then + source /etc/default/bazzite + if [[ ${BASE_IMAGE_NAME} == 'silverblue' ]]; then + gnome-shell-extension-cl -e user-theme@gnome-shell-extensions.gcampax.github.com gsettings set org.gnome.desktop.wm.preferences button-layout appmenu:minimize,maximize,close gsettings set org.gnome.desktop.interface color-scheme prefer-dark gsettings set org.gnome.desktop.interface gtk-theme adw-gtk3-dark @@ -128,7 +133,7 @@ set-btrfs-flags: zram-on: #!/usr/bin/env bash KARGS=$(rpm-ostree kargs) - if grep 'zram' <<< ${KARGS}; then + if grep -q 'zram' <<< ${KARGS}; then rpm-ostree kargs --delete=zram echo 'ZRAM enabled. Please reboot.' else @@ -138,7 +143,7 @@ zram-on: zram-off: #!/usr/bin/env bash KARGS=$(rpm-ostree kargs) - if grep -v 'zram' <<< ${KARGS}; then + if grep -qv 'zram' <<< ${KARGS}; then rpm-ostree kargs --append=zram=0 echo 'ZRAM disabled. Please reboot.' else @@ -148,7 +153,7 @@ zram-off: resize-zram: #!/usr/bin/env bash CONFIG='/etc/systemd/zram-generator.conf' - if grep "zram-size" <<< $(cat ${CONFIG}); then + if grep -q "zram-size" <<< $(cat ${CONFIG}); then CURRENT_SIZE=$(cat "${CONFIG}" | grep "zram-size" | sed 's/zram-size=//g') else CURRENT_SIZE=1024 diff --git a/system_files/desktop/silverblue/etc/flatpak/install b/system_files/desktop/silverblue/etc/flatpak/install index 684faf5d..dd1f8ac5 100644 --- a/system_files/desktop/silverblue/etc/flatpak/install +++ b/system_files/desktop/silverblue/etc/flatpak/install @@ -7,3 +7,4 @@ com.mattjakeman.ExtensionManager org.gtk.Gtk3theme.adw-gtk3 org.gtk.Gtk3theme.adw-gtk3-dark org.mozilla.firefox +com.github.tchx84.Flatseal diff --git a/system_files/desktop/silverblue/usr/bin/gnome-shell-extension-cl b/system_files/desktop/silverblue/usr/bin/gnome-shell-extension-cl new file mode 100755 index 00000000..1871e212 --- /dev/null +++ b/system_files/desktop/silverblue/usr/bin/gnome-shell-extension-cl @@ -0,0 +1,275 @@ +#! /usr/bin/env bash + +# Copyright (C) 2016 +# Alexandru Catalin Petrini +# This script is intended to usefully manage gnome-shell extensions, +# in compatible Gnome Shell versions. + +# Install this script by running this command: +# $ sudo wget https://raw.githubusercontent.com/cyberalex4life/gnome-shell-extension-cl/master/gnome-shell-extension-cl -O /usr/local/bin/gnome-shell-extension-cl && sudo chmod +x /usr/local/bin/gnome-shell-extension-cl + + +# ------------------------------------------------------------------------------- + +function get_enabled_extensions() { + enabled_extensions=( $(gsettings get org.gnome.shell enabled-extensions | \ + sed -e 's|^@as ||g' | tr -d "[",",","]","\'") ) +} + + +function print_enabled_extensions(){ + get_enabled_extensions + for enabled_extension in "${enabled_extensions[@]}" + do + echo "$enabled_extension" + done +} + + +# ------------------------------------------------------------------------------- + +function get_installed_extensions() { + global_installed_extensions=( $(find "/usr/share/gnome-shell/extensions/" \ + -maxdepth 1 -type d -name "*@*" -exec \ + /usr/bin/basename {} \;) ) + local_installed_extensions=( $(find "$HOME/.local/share/gnome-shell/extensions/" \ + -maxdepth 1 -type d -name "*@*" -exec \ + /usr/bin/basename {} \;) ) + + if [ ${#local_installed_extensions[@]} -gt ${#global_installed_extensions[@]} ] + then + installed_extensions=( ${local_installed_extensions[@]} ) + test_extensions=( ${global_installed_extensions[@]} ) + else + installed_extensions=( ${global_installed_extensions[@]} ) + test_extensions=( ${local_installed_extensions[@]} ) + fi + for test_extension in "${test_extensions[@]}" + do + test_extension_not_doubled=true + for installed_extension in "${installed_extensions[@]}" + do + if [ "$test_extension" = "$installed_extension" ] + then + test_extension_not_doubled=false + break + fi + done + if [ $test_extension_not_doubled = true ] + then + test_extension=( $test_extension ) + installed_extensions=( "${installed_extensions[@]}" "${test_extension[@]}" ) + #echo ${test_extension[@]} + fi + done + echo "${installed_extensions[@]}" +} + + +function print_installed_extensions() { + installed_extensions=( $(get_installed_extensions) ) + for installed_extension in "${installed_extensions[@]}" + do + [ "$(check_extension_is_enabled "$installed_extension")" = true ] && \ + status="enabled" || status="disabled"; + printf "%-65s - %-10s \n" "$installed_extension" "$status" + done +} + + +# ------------------------------------------------------------------------------- + +function check_extension_is_enabled() { + extension_to_check=$1 + enabled_extensions=( $(gsettings get org.gnome.shell enabled-extensions | \ + sed -e 's|^@as ||g' | tr -d "[",",","]","\'") ) + for enabled_extension in "${enabled_extensions[@]}" + do + if [ "$enabled_extension" = "$extension_to_check" ] + then + echo true + return + fi + done + echo false +} + + +function check_extension_in_all_extensions() { + extension_to_check=$1 + installed_extensions=( $(get_installed_extensions) ) + for installed_extension in "${installed_extensions[@]}" + do + if [ "$installed_extension" = "$extension_to_check" ] + then + echo true + return + fi + done + echo false +} + + +function version_greater() { + minimal_version=3.18.0 + our_version=$(gnome-shell --version | awk '{print $3}') + if [ "$(echo "$our_version $minimal_version" | tr " " "\n" | sort -V | head -n 1)" != "$our_version" ] + then + echo true + else + echo false + fi +} + + +function disable_extension() { + + arguments=("$@") + unset "arguments[0]" + + for extension_to_disable in "${arguments[@]}" + do + + if [ "$(check_extension_in_all_extensions "$extension_to_disable")" = false ] + then + echo "'$extension_to_disable' is not installed." + continue + fi + if [ "$(check_extension_is_enabled "$extension_to_disable")" = false ] + then + echo "'$extension_to_disable' is already disabled." + continue + fi + if [ "$(version_greater)" = true ] + then + gnome-shell-extension-tool -d "$extension_to_disable" + continue + fi + enabled_extensions=( $(gsettings get org.gnome.shell enabled-extensions | \ + tr -d "[",",","]","\'") ) + enabled_extensions_string="" + for enabled_extension in "${enabled_extensions[@]}" + do + if [ "$enabled_extension" != "$extension_to_disable" ] + then + enabled_extensions_string="$enabled_extensions_string '$enabled_extension', " + fi + done + enabled_extensions_string=${enabled_extensions_string:1:-2} + enabled_extensions_string="[ $enabled_extensions_string ]" + + dbus-launch gsettings set org.gnome.shell enabled-extensions "$enabled_extensions_string" + + done + return +} + + +function enable_extension() { + + arguments=("$@") + unset "arguments[0]" + + for extension_to_enable in "${arguments[@]}" + do + + if [ "$(check_extension_in_all_extensions "$extension_to_enable")" = false ] + then + echo "'$extension_to_enable' is not installed." + continue + fi + if [ "$(check_extension_is_enabled "$extension_to_enable")" = true ] + then + echo "'$extension_to_enable' is already enabled." + continue + fi + if [ "$(version_greater)" = true ] + then + gnome-shell-extension-tool -e "$extension_to_enable" + continue + fi + enabled_extensions_string=$(gsettings get org.gnome.shell enabled-extensions | tr -d "]") + [ "$enabled_extensions_string" != "@as [" ] && delimiter=, + enabled_extensions_string="${enabled_extensions_string}${delimiter} '$extension_to_enable' ]" + + gsettings set org.gnome.shell enabled-extensions "$enabled_extensions_string" + + done + return +} + + +# ------------------------------------------------------------------------------- + +function disable_all_extensions() { + get_enabled_extensions + for enabled_extension in "${enabled_extensions[@]}" + do + # Don't disable user-theme extensions to avoid breaking them + if [ "$enabled_extension" != "user-theme" ] && \ + [ "$enabled_extension" != "user-themes" ] && \ + [ "$enabled_extension" != "user-theme@gnome-shell-extensions.gcampax.github.com" ] + then + disable_extension "this element will be ignored" "$enabled_extension" + else + continue + fi + done +} + + +# ------------------------------------------------------------------------------- + +function print_help() { + + printf " +GNOME Shell Extension Control Tool: + +usage: gnome-shell-extensions