diff --git a/.github/ISSUE_TEMPLATE/bug-report.yml b/.github/ISSUE_TEMPLATE/bug-report.yml new file mode 100644 index 00000000000..a98d8c5e243 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug-report.yml @@ -0,0 +1,36 @@ +name: Bug Report +description: Report an issue about using Bluefin +body: + - type: markdown + attributes: + value: | + Thank you for taking the time to fill out this bug report! (She bites sometimes) + - type: textarea + id: describe-bug + attributes: + label: Describe the bug + description: A clear and concise description of what the bug is. + placeholder: Tell us what happened! + value: "When I entered 2 + 2, I got the answer 6." + validations: + required: true + - type: textarea + id: expected-bahavior + attributes: + label: What did you expect to happen? + description: A clear and concise description of what you expected to happen. + placeholder: What were you expecting to happen? + value: "I expected 2 + 2 to equal 4, but instead 2 + 2 equaled 6!" + validations: + required: true + - type: textarea + id: version + attributes: + label: Output of `rpm-ostree status` + description: Please run `rpm-ostree status` and paste the output here. + render: shell + - type: textarea + id: extra-context + attributes: + label: Extra information or context + description: Add any other context about the problem here. diff --git a/.github/workflows/build-bluefin-toolbox.yml b/.github/workflows/build-bluefin-toolbox.yml new file mode 100644 index 00000000000..2f109b0fbb1 --- /dev/null +++ b/.github/workflows/build-bluefin-toolbox.yml @@ -0,0 +1,104 @@ +name: Build and Push Bluefin Toolbox Image +on: + schedule: + - cron: '20 22 * * *' # 10:20pm everyday + pull_request: + merge_group: + workflow_dispatch: +env: + IMAGE_NAME: bluefin-cli + IMAGE_TAGS: latest + IMAGE_REGISTRY: ghcr.io/${{ github.repository_owner }} + +concurrency: + group: ${{ github.workflow }}-${{ github.ref || github.run_id }} + cancel-in-progress: true + +jobs: + push-ghcr: + name: Build and push image + runs-on: ubuntu-22.04 + permissions: + contents: read + packages: write + id-token: write + strategy: + fail-fast: false + steps: + # Checkout push-to-registry action GitHub repository + - name: Checkout Push to Registry action + uses: actions/checkout@v4 + + # Build metadata + - name: Image Metadata + uses: docker/metadata-action@v5 + id: meta + with: + images: | + ${{ env.IMAGE_NAME }} + labels: | + io.artifacthub.package.readme-url=https://raw.githubusercontent.com/ublue-os/boxkit/main/README.md + + # Build image using Buildah action + - name: Build Image + id: build_image + uses: redhat-actions/buildah-build@v2 + with: + containerfiles: | + ./toolboxes/Containerfile.bluefin-cli + image: ${{ env.IMAGE_NAME }} + tags: ${{ env.IMAGE_TAGS }} + labels: ${{ steps.meta.outputs.labels }} + oci: false + + # Workaround bug where capital letters in your GitHub username make it impossible to push to GHCR. + # https://github.com/macbre/push-to-ghcr/issues/12 + - name: Lowercase Registry + id: registry_case + uses: ASzc/change-string-case-action@v6 + with: + string: ${{ env.IMAGE_REGISTRY }} + + # Push the image to GHCR (Image Registry) + - name: Push To GHCR + uses: redhat-actions/push-to-registry@v2 + if: github.event_name != 'pull_request' + id: push + env: + REGISTRY_USER: ${{ github.actor }} + REGISTRY_PASSWORD: ${{ github.token }} + with: + image: ${{ steps.build_image.outputs.image }} + tags: ${{ steps.build_image.outputs.tags }} + registry: ${{ steps.registry_case.outputs.lowercase }} + username: ${{ env.REGISTRY_USER }} + password: ${{ env.REGISTRY_PASSWORD }} + extra-args: | + --disable-content-trust + + - name: Login to GitHub Container Registry + uses: docker/login-action@v3 + if: github.event_name != 'pull_request' + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + # Sign container + - uses: sigstore/cosign-installer@v3.2.0 + if: github.event_name != 'pull_request' + + - name: Sign container image + if: github.event_name != 'pull_request' + run: | + echo "${{ env.COSIGN_PRIVATE_KEY }}" > cosign.key + wc -c cosign.key + cosign sign -y --key cosign.key ${{ steps.registry_case.outputs.lowercase }}/${{ env.IMAGE_NAME }}@${TAGS} + env: + TAGS: ${{ steps.push.outputs.digest }} + COSIGN_EXPERIMENTAL: false + COSIGN_PRIVATE_KEY: ${{ secrets.SIGNING_SECRET }} + + - name: Echo outputs + run: | + echo "${{ toJSON(steps.push.outputs) }}" diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 2eaa0c5703d..b09dc7caf1c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -47,6 +47,9 @@ jobs: - name: Checkout Push to Registry action uses: actions/checkout@v4 + - name: Check just syntax + uses: ublue-os/just-action@v1 + - name: Matrix Variables run: | if [[ "${{ matrix.image_flavor }}" == "main" ]]; then @@ -203,9 +206,14 @@ jobs: check: name: Check all builds successful + if: ${{ !cancelled() }} runs-on: ubuntu-latest needs: [push-ghcr] steps: + - name: Exit on failure + if: ${{ needs.push-ghcr.result == 'failure' }} + shell: bash + run: exit 1 - name: Exit shell: bash run: exit 0 diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml index 42380140a8f..7b828191d63 100644 --- a/.github/workflows/release-please.yml +++ b/.github/workflows/release-please.yml @@ -19,8 +19,8 @@ jobs: tag: ${{ steps.release-please.outputs.tag_name }} upload_url: ${{ steps.release-please.outputs.upload_url }} steps: - - uses: google-github-actions/release-please-action@v3 + - uses: google-github-actions/release-please-action@v4 id: release-please with: - release-type: node + release-type: simple package-name: release-please-action diff --git a/Containerfile b/Containerfile index ec2ec0afc88..06020e08dfe 100644 --- a/Containerfile +++ b/Containerfile @@ -17,14 +17,21 @@ ARG BASE_IMAGE_NAME="${BASE_IMAGE_NAME}" ARG FEDORA_MAJOR_VERSION="${FEDORA_MAJOR_VERSION}" ARG PACKAGE_LIST="bluefin" -# GNOME VRR -RUN wget https://copr.fedorainfracloud.org/coprs/kylegospo/gnome-vrr/repo/fedora-"${FEDORA_MAJOR_VERSION}"/kylegospo-gnome-vrr-fedora-"${FEDORA_MAJOR_VERSION}".repo -O /etc/yum.repos.d/_copr_kylegospo-gnome-vrr.repo && \ - if [ ${FEDORA_MAJOR_VERSION} -lt 39 ]; then \ - rpm-ostree override replace --experimental --from repo=copr:copr.fedorainfracloud.org:kylegospo:gnome-vrr mutter mutter-common gnome-control-center gnome-control-center-filesystem xorg-x11-server-Xwayland \ - ; else \ - rpm-ostree override replace --experimental --from repo=copr:copr.fedorainfracloud.org:kylegospo:gnome-vrr mutter mutter-common gnome-control-center gnome-control-center-filesystem \ - ; fi && \ - rm -f /etc/yum.repos.d/_copr_kylegospo-gnome-vrr.repo +# GNOME VRR & Prompt +RUN if [ ${FEDORA_MAJOR_VERSION} -ge "39" ]; then \ + wget https://copr.fedorainfracloud.org/coprs/kylegospo/gnome-vrr/repo/fedora-"${FEDORA_MAJOR_VERSION}"/kylegospo-gnome-vrr-fedora-"${FEDORA_MAJOR_VERSION}".repo -O /etc/yum.repos.d/_copr_kylegospo-gnome-vrr.repo && \ + rpm-ostree override replace --experimental --from repo=copr:copr.fedorainfracloud.org:kylegospo:gnome-vrr mutter mutter-common gnome-control-center gnome-control-center-filesystem && \ + rm -f /etc/yum.repos.d/_copr_kylegospo-gnome-vrr.repo && \ + wget https://copr.fedorainfracloud.org/coprs/kylegospo/prompt/repo/fedora-$(rpm -E %fedora)/kylegospo-prompt-fedora-$(rpm -E %fedora).repo?arch=x86_64 -O /etc/yum.repos.d/_copr_kylegospo-prompt.repo && \ + rpm-ostree override replace \ + --experimental \ + --from repo=copr:copr.fedorainfracloud.org:kylegospo:prompt \ + vte291 \ + vte-profile && \ + rpm-ostree install \ + prompt && \ + rm -f /etc/yum.repos.d/_copr_kylegospo-prompt.repo \ + ; fi COPY usr /usr COPY just /tmp/just @@ -87,6 +94,7 @@ RUN wget https://copr.fedorainfracloud.org/coprs/ublue-os/bling/repo/fedora-$(rp rm -f /usr/share/applications/fish.desktop && \ rm -f /usr/share/applications/htop.desktop && \ rm -f /usr/share/applications/nvtop.desktop && \ + rm -fr /usr/share/applications/gnome-system-monitor.desktop && \ sed -i 's/#DefaultTimeoutStopSec.*/DefaultTimeoutStopSec=15s/' /etc/systemd/user.conf && \ sed -i 's/#DefaultTimeoutStopSec.*/DefaultTimeoutStopSec=15s/' /etc/systemd/system.conf && \ sed -i '/^PRETTY_NAME/s/Silverblue/Bluefin/' /usr/lib/os-release && \ @@ -118,7 +126,8 @@ COPY workarounds.sh \ RUN sysctl -p RUN wget https://copr.fedorainfracloud.org/coprs/ganto/lxc4/repo/fedora-"${FEDORA_MAJOR_VERSION}"/ganto-lxc4-fedora-"${FEDORA_MAJOR_VERSION}".repo -O /etc/yum.repos.d/ganto-lxc4-fedora-"${FEDORA_MAJOR_VERSION}".repo && \ - wget https://copr.fedorainfracloud.org/coprs/ublue-os/staging/repo/fedora-"${FEDORA_MAJOR_VERSION}"/ublue-os-staging-fedora-"${FEDORA_MAJOR_VERSION}".repo -O /etc/yum.repos.d/ublue-os-staging-fedora-"${FEDORA_MAJOR_VERSION}".repo + wget https://copr.fedorainfracloud.org/coprs/ublue-os/staging/repo/fedora-"${FEDORA_MAJOR_VERSION}"/ublue-os-staging-fedora-"${FEDORA_MAJOR_VERSION}".repo -O /etc/yum.repos.d/ublue-os-staging-fedora-"${FEDORA_MAJOR_VERSION}".repo && \ + wget https://copr.fedorainfracloud.org/coprs/karmab/kcli/repo/fedora-"${FEDORA_MAJOR_VERSION}"/karmab-kcli-fedora-"${FEDORA_MAJOR_VERSION}".repo -O /etc/yum.repos.d/karmab-kcli-fedora-"${FEDORA_MAJOR_VERSION}".repo # Handle packages via packages.json RUN /tmp/build.sh && \ @@ -157,6 +166,7 @@ RUN /tmp/workarounds.sh # Clean up repos, everything is on the image so we don't need them RUN rm -f /etc/yum.repos.d/ublue-os-staging-fedora-"${FEDORA_MAJOR_VERSION}".repo && \ rm -f /etc/yum.repos.d/ganto-lxc4-fedora-"${FEDORA_MAJOR_VERSION}".repo && \ + rm -f /etc/yum.repos.d/karmab-kcli-fedora-"${FEDORA_MAJOR_VERSION}".repo && \ rm -f /etc/yum.repos.d/vscode.repo && \ rm -f /etc/yum.repos.d/docker-ce.repo && \ rm -f /etc/yum.repos.d/_copr:copr.fedorainfracloud.org:phracek:PyCharm.repo && \ diff --git a/README.md b/README.md index 7e279f7cddb..4992f7da96c 100644 --- a/README.md +++ b/README.md @@ -17,8 +17,8 @@ A familiar(ish) Ubuntu desktop for Fedora Silverblue. It strives to cover these # Documentation -1. [Bluefin](https://universal-blue.org/images/bluefin/) +1. [Bluefin](http://universal-blue.discourse.group/t/introduction-to-bluefin/41) 2. [Discussions and Announcements](https://universal-blue.discourse.group/c/bluefin/6) - strongly recommended! -3. [Developer Experience Edition](https://universal-blue.org/images/bluefin/developer-experience) -4. [Administrator's Guide](https://universal-blue.discourse.group/docs?topic=40) +3. [Developer Experience Edition](http://universal-blue.discourse.group/t/bluefin-dx-the-bluefin-developer-experience/39) +4. [Administrator's Guide](http://universal-blue.discourse.group/t/bluefin-administrators-guide/40) 5. [Framework Images](https://universal-blue.org/images/framework/) diff --git a/dx/usr/bin/bluefinbox-enter b/dx/usr/bin/bluefinbox-enter index 688e1dc9e38..2645cff40a0 100755 --- a/dx/usr/bin/bluefinbox-enter +++ b/dx/usr/bin/bluefinbox-enter @@ -19,11 +19,8 @@ if [ "$container_exists" -eq 0 ]; then # No need to assemble, enjoy your stay exec distrobox enter "${container_name}" else - # We don't have the container so we assemble it first. With distrobox version 1.5.0.2 - # or below we need to assemble all the entries that occur in the `distrobox.ini` manifest. - # In future versions of distrobox we will be able to specify `--name $container_name` to - # only assemble the box we want to enter. - distrobox assemble create --replace --file /etc/distrobox/distrobox.ini + # We don't have the container so we assemble it first. + distrobox assemble create --name "${container_name}" --replace --file /etc/distrobox/distrobox.ini # All done, good to go exec distrobox enter "${container_name}" diff --git a/dx/usr/etc/dconf/db/local.d/01-ublue-dx b/dx/usr/etc/dconf/db/local.d/01-ublue-dx index dfd12932609..6480091ea23 100644 --- a/dx/usr/etc/dconf/db/local.d/01-ublue-dx +++ b/dx/usr/etc/dconf/db/local.d/01-ublue-dx @@ -1,7 +1,10 @@ +[org/gnome/shell] +favorite-apps = ['org.mozilla.firefox.desktop', 'org.mozilla.Thunderbird.desktop', 'org.gnome.Nautilus.desktop', 'org.gnome.Rhythmbox3.desktop', 'org.libreoffice.LibreOffice.writer.desktop', 'org.gnome.Software.desktop', 'code.desktop', 'org.gnome.Prompt.desktop', 'ubuntu.desktop', 'yelp.desktop'] + [org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom3] binding='f' -command='flatpak run com.raggesilver.BlackBox --command "bluefinbox-enter fedora"' -name='blackbox fedora' +command='xdg-terminal-exec -- bluefinbox-enter fedora' +name='Fedora Prompt' [org/gnome/settings-daemon/plugins/media-keys] custom-keybindings=['/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom2/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom3/'] diff --git a/dx/usr/share/ublue-os/distrobox/pytorch-nvidia.ini b/dx/usr/share/ublue-os/distrobox/pytorch-nvidia.ini index e9cf02a8d4b..c9de08221db 100644 --- a/dx/usr/share/ublue-os/distrobox/pytorch-nvidia.ini +++ b/dx/usr/share/ublue-os/distrobox/pytorch-nvidia.ini @@ -1,5 +1,5 @@ [mlbox] -image=nvcr.io/nvidia/pytorch:23.09-py3 +image=nvcr.io/nvidia/pytorch:23.10-py3 additional_packages="nano git htop" init_hooks="pip3 install huggingface_hub tokenizers transformers accelerate datasets wandb peft bitsandbytes fastcore fastprogress watermark torchmetrics deepspeed" #pre-init-hooks="/init_script.sh" diff --git a/just/custom.just b/just/custom.just index d111d8726cb..6686a80b498 100644 --- a/just/custom.just +++ b/just/custom.just @@ -2,288 +2,296 @@ # Run a one minute system benchmark benchmark: - echo 'Running a 1 minute benchmark ...' - stress-ng --matrix 0 -t 1m --times + echo 'Running a 1 minute benchmark ...' + stress-ng --matrix 0 -t 1m --times # Assemble distrobox containers assemble: - echo 'Assembling and replacing distroboxes ...' - distrobox assemble create --replace --file /etc/distrobox/distrobox.ini + echo 'Assembling and replacing distroboxes ...' + distrobox assemble create --replace --file /etc/distrobox/distrobox.ini # Install aqua | https://aquaproj.github.io aqua: - #!/usr/bin/env bash - printf '\n=>Installing aqua ...\n\n' - pushd "$(mktemp -d)" - curl -sSfL -O https://raw.githubusercontent.com/aquaproj/aqua-installer/v2.1.1/aqua-installer - echo "c2af02bdd15da6794f9c98db40332c804224930212f553a805425441f8331665 aqua-installer" | sha256sum -c - chmod +x aqua-installer - ./aqua-installer - printf '\n=> Make sure the ${AQUA_ROOT_DIR}/bin environment variable is added to your PATH (.bashrc/.zshrc):\n' - printf '\n export PATH="${AQUA_ROOT_DIR:-${XDG_DATA_HOME:-$HOME/.local/share}/aquaproj-aqua}/bin:$PATH"\n' - printf '\n=> see https://aquaproj.github.io/docs/tutorial for more info\n' - -# Install Homebrew for Linux -brew: - echo "Installing homebrew ..." - /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" - -# Remove Homebrew -brew-remove: - echo "Removing homebrew ..." - /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/uninstall.sh)" - -# Add Homebrew to shell rc files -brew-shell: - #!/usr/bin/env bash - set -euxo pipefail - echo "Adding homebrew to shell configuration" - touch $HOME/.zprofile - touch $HOME/.bash_profile - if grep -q "linuxbrew" $HOME/.zprofile - then - echo "Brew configuration already present in .zprofile" - else - echo "Adding Brew configuration to .zprofile" - echo 'eval "$(/var/home/linuxbrew/.linuxbrew/bin/brew shellenv)"' >> $HOME/.zprofile - fi - if grep -q "linuxbrew" $HOME/.bash_profile - then - echo "Brew configuration already present in .bash_profile" - else - echo "Adding Brew configuration to .bash_profile" - echo 'eval "$(/var/home/linuxbrew/.linuxbrew/bin/brew shellenv)"' >> $HOME/.bash_profile - fi + #!/usr/bin/env bash + printf '\n=>Installing aqua ...\n\n' + pushd "$(mktemp -d)" + curl -sSfL -O https://raw.githubusercontent.com/aquaproj/aqua-installer/v2.1.1/aqua-installer + echo "c2af02bdd15da6794f9c98db40332c804224930212f553a805425441f8331665 aqua-installer" | sha256sum -c + chmod +x aqua-installer + ./aqua-installer + printf '\n=> Make sure the ${AQUA_ROOT_DIR}/bin environment variable is added to your PATH (.bashrc/.zshrc):\n' + printf '\n export PATH="${AQUA_ROOT_DIR:-${XDG_DATA_HOME:-$HOME/.local/share}/aquaproj-aqua}/bin:$PATH"\n' + printf '\n=> see https://aquaproj.github.io/docs/tutorial for more info\n' + +[private] +bluefin-cli: + #!/usr/bin/env bash + if [ ! -f "${HOME}/.brew_pkgs" ]; then + echo dysk > "${HOME}/.brew_pkgs" + fi; + distrobox-create --nvidia --image ghcr.io/ublue-os/bluefin-cli:latest -n bluefin -Y -a "--env BREW_PKGS=.brew_pkgs" + echo "Entering bluefin-cli" + distrobox enter bluefin # Enable Cockpit for web-based system management | https://cockpit-project.org/ cockpit: - echo 'Enabling Cockpit' - echo 'PasswordAuthentication yes' | sudo tee /etc/ssh/sshd_config.d/02-enable-passwords.conf - sudo systemctl try-restart sshd - sudo systemctl enable --now sshd - sudo podman container runlabel --name cockpit-ws RUN quay.io/cockpit/ws - sudo podman container runlabel INSTALL quay.io/cockpit/ws - sudo systemctl enable cockpit.service - echo 'Open Cockpit -> http://localhost:9090' - -# Import a devcontainers profile for VSCode -code-profile: - xdg-open https://vscode.dev/profile/github/c761b7738e9a7b02286d6d94cb2d1ecd - -# Rebase to a stock Bluefin image -devmode-off: - #!/usr/bin/env bash - CURRENT_IMAGE=$(rpm-ostree status -b --json | jq -r '.deployments[0]."container-image-reference"') - if grep -q "bluefin-dx" <<< $CURRENT_IMAGE - then - echo "Rebasing to a non developer image" - NEW_IMAGE=$(echo $CURRENT_IMAGE | sed "s/bluefin-dx/bluefin/") - rpm-ostree rebase $NEW_IMAGE - else - echo "You are currently not on a developer image" - fi - -# Rebase to the Bluefin Developer Experience image -devmode-on: - #!/usr/bin/env bash - CURRENT_IMAGE=$(rpm-ostree status -b --json | jq -r '.deployments[0]."container-image-reference"') - - if grep -q "/var/ublue-os/image" <<< $CURRENT_IMAGE - then - echo "" - echo "Before we can switch to the Bluefin Developer Experience" - echo "the current system needs an update. Please run 'just update'" - echo "and reboot your system when the update is finished." - exit - fi - - if grep -q "bluefin-dx" <<< $CURRENT_IMAGE - then - echo "You are already on a developer image" - else - echo "Rebasing to a developer image" - NEW_IMAGE=$(echo $CURRENT_IMAGE | sed "s/bluefin/bluefin-dx/") - rpm-ostree rebase $NEW_IMAGE - fi + echo 'Enabling Cockpit' + echo 'PasswordAuthentication yes' | sudo tee /etc/ssh/sshd_config.d/02-enable-passwords.conf + sudo systemctl try-restart sshd + sudo systemctl enable --now sshd + sudo podman container runlabel --name cockpit-ws RUN quay.io/cockpit/ws + sudo podman container runlabel INSTALL quay.io/cockpit/ws + sudo systemctl enable cockpit.service + echo 'Open Cockpit -> http://localhost:9090' + +# Toggle between Bluefin and the Developer Experience +devmode: + #!/usr/bin/env bash + CURRENT_IMAGE=$(rpm-ostree status -b --json | jq -r '.deployments[0]."container-image-reference"') + + if grep -q "/var/ublue-os/image" <<< $CURRENT_IMAGE + then + echo "" + echo "Before we can switch to the Bluefin Developer Experience" + echo "the current system needs an update. Please run 'just update'" + echo "and reboot your system when the update is finished." + exit + fi + + if grep -q "bluefin-dx" <<< $CURRENT_IMAGE + then + CURRENT_STATE="enabled" + else + CURRENT_STATE="disabled" + fi + + echo "Developer mode is currently ${CURRENT_STATE}" + echo "Enable or Disable developer mode" + OPTION=$(gum choose Enable Disable) + if [ "$OPTION" = "Enable" ] + then + if [ "$CURRENT_STATE" = "enabled" ] + then + echo "You are already on a developer image" + else + echo "Rebasing to a developer image" + NEW_IMAGE=$(echo $CURRENT_IMAGE | sed "s/bluefin/bluefin-dx/") + rpm-ostree rebase $NEW_IMAGE + fi + elif [ "$OPTION" = "Disable" ] + then + if [ "$CURRENT_STATE" = "enabled" ] + then + echo "Rebasing to a non developer image" + NEW_IMAGE=$(echo $CURRENT_IMAGE | sed "s/bluefin-dx/bluefin/") + rpm-ostree rebase $NEW_IMAGE + else + echo "You are currently not on a developer image" + fi + fi # Assemble a Pytorch distrobox (Nvidia only) distrobox-mlbox: - echo 'Assembling pytorch-nvidia mlbox distrobox ...' - distrobox assemble create --file /usr/share/ublue-os/distrobox/pytorch-nvidia.ini + echo 'Assembling pytorch-nvidia mlbox distrobox ...' + distrobox assemble create --file /usr/share/ublue-os/distrobox/pytorch-nvidia.ini # Create a Wolfi OS container | https://github.com/wolfi-dev distrobox-wolfi: - echo 'Creating WolfiOS distrobox ...' - distrobox create --image ghcr.io/ublue-os/wolfi-toolbox:latest -n wolfi + echo 'Creating WolfiOS distrobox ...' + distrobox create --image ghcr.io/ublue-os/wolfi-toolbox:latest -n wolfi # Create a universal developer container distrobox-universal: - echo 'Creating Universal Development distrobox ...' - distrobox create --image mcr.microsoft.com/devcontainers/universal:latest -n universal -Y + echo 'Creating Universal Development distrobox ...' + distrobox create --image mcr.microsoft.com/devcontainers/universal:latest -n universal -Y # Switch to the fish shell fish: - sudo usermod $USER --shell /usr/bin/fish - printf "${USER}'s shell is now %s." "$(cat /etc/passwd | grep ":$UID:" | cut '-d:' '-f7')" + sudo usermod $USER --shell /usr/bin/fish + printf "${USER}'s shell is now %s." "$(cat /etc/passwd | grep ":$UID:" | cut '-d:' '-f7')" # Install recommended GNOME extensions gnome-extensions: - pip install --upgrade gnome-extensions-cli - gext install tailscale-status@maxgallup.github.com - gext install nightthemeswitcher@romainvigier.fr - gext install pano@elhan.io - gext install weatheroclock@CleoMenezesJr.github.io + pip install --upgrade gnome-extensions-cli + gext install tailscale-status@maxgallup.github.com + gext install nightthemeswitcher@romainvigier.fr + gext install pano@elhan.io + gext install weatheroclock@CleoMenezesJr.github.io # Enable or Disable Gnome-VRR gnome-vrr: - #!/usr/bin/env bash - if gsettings get org.gnome.mutter experimental-features | grep -q "variable-refresh-rate" - then - CURRENT_STATE="Enabled" - else - CURRENT_STATE="Disabled" - fi - echo "Gnome-VRR is currently ${CURRENT_STATE}" - echo "Enable or Disable Gnome-VRR" - OPTION=$(gum choose Enable Disable) - if [ "$OPTION" = "Enable" ] - then - echo "Enabling Gnome-VRR" - gsettings set org.gnome.mutter experimental-features "['variable-refresh-rate','scale-monitor-framebuffer']" - elif [ "$OPTION" = "Disable" ] - then - echo "Disabling Gnome-VRR" - gsettings set org.gnome.mutter experimental-features "['scale-monitor-framebuffer']" - fi - echo "To apply the changes make sure you logout and restart your session" + #!/usr/bin/env bash + if gsettings get org.gnome.mutter experimental-features | grep -q "variable-refresh-rate" + then + CURRENT_STATE="Enabled" + else + CURRENT_STATE="Disabled" + fi + echo "Gnome-VRR is currently ${CURRENT_STATE}" + echo "Enable or Disable Gnome-VRR" + OPTION=$(gum choose Enable Disable) + if [ "$OPTION" = "Enable" ] + then + echo "Enabling Gnome-VRR" + gsettings set org.gnome.mutter experimental-features "['variable-refresh-rate','scale-monitor-framebuffer']" + elif [ "$OPTION" = "Disable" ] + then + echo "Disabling Gnome-VRR" + gsettings set org.gnome.mutter experimental-features "['scale-monitor-framebuffer']" + fi + echo "To apply the changes make sure you logout and restart your session" # Install JetBrains Toolbox | https://www.jetbrains.com/toolbox-app/ jetbrains-toolbox: - #!/usr/bin/env bash - pushd "$(mktemp -d)" - echo "Get latest JetBrains Toolbox version" - # Get the json with latest releases - curl -sSfL -o releases.json "https://data.services.jetbrains.com/products/releases?code=TBA&latest=true&type=release" - # Extract information - BUILD_VERSION=$(jq -r '.TBA[0].build' ./releases.json) - DOWNLOAD_LINK=$(jq -r '.TBA[0].downloads.linux.link' ./releases.json) - CHECKSUM_LINK=$(jq -r '.TBA[0].downloads.linux.checksumLink' ./releases.json) - echo "Installing JetBrains Toolbox ${BUILD_VERSION}" - curl -sSfL -O "${DOWNLOAD_LINK}" - curl -sSfL "${CHECKSUM_LINK}" | sha256sum -c - tar zxf jetbrains-toolbox-"${BUILD_VERSION}".tar.gz - echo "Launching JetBrains Toolbox" - ./jetbrains-toolbox-"${BUILD_VERSION}"/jetbrains-toolbox + #!/usr/bin/env bash + pushd "$(mktemp -d)" + echo "Get latest JetBrains Toolbox version" + # Get the json with latest releases + curl -sSfL -o releases.json "https://data.services.jetbrains.com/products/releases?code=TBA&latest=true&type=release" + # Extract information + BUILD_VERSION=$(jq -r '.TBA[0].build' ./releases.json) + DOWNLOAD_LINK=$(jq -r '.TBA[0].downloads.linux.link' ./releases.json) + CHECKSUM_LINK=$(jq -r '.TBA[0].downloads.linux.checksumLink' ./releases.json) + echo "Installing JetBrains Toolbox ${BUILD_VERSION}" + curl -sSfL -O "${DOWNLOAD_LINK}" + curl -sSfL "${CHECKSUM_LINK}" | sha256sum -c + tar zxf jetbrains-toolbox-"${BUILD_VERSION}".tar.gz + echo "Launching JetBrains Toolbox" + ./jetbrains-toolbox-"${BUILD_VERSION}"/jetbrains-toolbox + +# Install garden.io, the Cloud Native DevOps automation platform | https://garden.io +garden: + #!/usr/bin/env bash + if ! command -v garden &> /dev/null; then + ASSET_URL=$(curl -s https://api.github.com/repos/garden-io/garden/releases/latest | \ + jq -r '.assets[] | select(.browser_download_url | test("linux-amd64.tar.gz$")) | .browser_download_url') + GARDEN_DIR="${HOME}/.garden/bin" + TMP_DIR=$(mktemp -d) + curl -sSL "$ASSET_URL" | tar -xz -C "$TMP_DIR" + mkdir -p "$GARDEN_DIR" + mv "$TMP_DIR"/linux-amd64/garden "$GARDEN_DIR" + rm -rf "$TMP_DIR" + + echo "" + echo "🌺🌻 Garden has been successfully installed πŸŒ·πŸ’" + echo "" + echo "Add the Garden CLI to your path by adding the following to your .bashrc/.zshrc:" + echo "" + echo " export PATH=\$PATH:\$HOME/.garden/bin" + echo "" + echo "Head over to our documentation for next steps: https://docs.garden.io" + echo "" + fi # Install nix and Devbox nix-devbox: - echo 'Setting phasers to kill. Installing nix.' - curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | sh -s -- install - echo 'Installing devbox!' - curl -fsSL https://get.jetpack.io/devbox | bash - echo 'You MUST reboot to continue' + echo 'Setting phasers to kill. Installing nix.' + curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | sh -s -- install + echo 'Installing devbox!' + curl -fsSL https://get.jetpack.io/devbox | bash + echo 'You MUST reboot to continue' # Remove nix nix-remove: - echo 'Setting phasers to stun. Removing nix.' - /nix/nix-installer uninstall + echo 'Setting phasers to stun. Removing nix.' + /nix/nix-installer uninstall # Install nix and Devbox (Global Profile) nix-devbox-global: - echo 'Installing devbox global profile.' - devbox global pull https://devbox.getfleek.dev/high - echo 'run "devbox global run install-hook-bash" to configure bash shell' - echo 'run "devbox global run install-hook-zsh" to configure zsh shell' - echo 'run "devbox global run" to see other available configuration commands' + echo 'Installing devbox global profile.' + devbox global pull https://devbox.getfleek.dev/high + echo 'run "devbox global run install-hook-bash" to configure bash shell' + echo 'run "devbox global run install-hook-zsh" to configure zsh shell' + echo 'run "devbox global run" to see other available configuration commands' # Enable podmansh as user shell (EXPERIMENTAL) podmansh: - sudo mkdir -p /etc/containers/systemd/users/${UID} - sudo cp /usr/share/ublue-os/quadlets/podmansh.container /etc/containers/systemd/users/${UID}/podmansh.container - sudo usermod $USER --shell /usr/bin/podmansh - printf "${USER}'s shell is now %s." "$(cat /etc/passwd | grep ":$UID:" | cut '-d:' '-f7')" - systemctl --user start podman.socket - loginctl enable-linger $(whoami) - - podman pull ghcr.io/ublue-os/ubuntu-toolbox:latest - - systemctl --user daemon-reload - systemctl --user stop podmansh.service - systemctl --user start podmansh.service - - @echo "Shell now switched to podmansh. Spawn a new terminal to get going!" - @echo "By default, the shell will be Bash. To override it, create ~/.profile with your preferred shell" - @echo "Note: That shell must exist in the toolbox!" - @echo "To ensure a smooth experience within VSCode, please add the following to your settings.json:" - @echo "---" - @echo "\"terminal.integrated.profiles.linux\": {" - @echo " \"podmansh zsh\": {" - @echo " \"path\": \"podmansh\"," - @echo " \"args\": [\"-c\", \"cd \${workspaceFolder}; exec zsh\"]" - @echo " }" - @echo "}" - @echo "---" - @echo "Please make sure you have the following environment variable set WITHIN the container:" - @echo "---" - @echo "export DOCKER_HOST=unix:///var/run/podman/podman.sock" - @echo "---" - @echo "Happy Podmansh'ing!" + sudo mkdir -p /etc/containers/systemd/users/${UID} + sudo cp /usr/share/ublue-os/quadlets/podmansh.container /etc/containers/systemd/users/${UID}/podmansh.container + sudo usermod $USER --shell /usr/bin/podmansh + printf "${USER}'s shell is now %s." "$(cat /etc/passwd | grep ":$UID:" | cut '-d:' '-f7')" + systemctl --user start podman.socket + loginctl enable-linger $(whoami) + + podman pull ghcr.io/ublue-os/ubuntu-toolbox:latest + + systemctl --user daemon-reload + systemctl --user stop podmansh.service + systemctl --user start podmansh.service + + @echo "Shell now switched to podmansh. Spawn a new terminal to get going!" + @echo "By default, the shell will be Bash. To override it, create ~/.profile with your preferred shell" + @echo "Note: That shell must exist in the toolbox!" + @echo "To ensure a smooth experience within VSCode, please add the following to your settings.json:" + @echo "---" + @echo "\"terminal.integrated.profiles.linux\": {" + @echo " \"podmansh zsh\": {" + @echo " \"path\": \"podmansh\"," + @echo " \"args\": [\"-c\", \"cd \${workspaceFolder}; exec zsh\"]" + @echo " }" + @echo "}" + @echo "---" + @echo "Please make sure you have the following environment variable set WITHIN the container:" + @echo "---" + @echo "export DOCKER_HOST=unix:///var/run/podman/podman.sock" + @echo "---" + @echo "Happy Podmansh'ing!" # Switch podmansh to another image (EXPERIMENTAL) podmansh-switch IMAGE: - sudo sed -i "/Image\=.*$/c Image\={{IMAGE}}" /etc/containers/systemd/users/${UID}/podmansh.container - podman pull {{IMAGE}} - podman rm -f podmansh - systemctl --user daemon-reload - systemctl --user start podmansh.service - echo "Image now switched to {{IMAGE}}" + sudo sed -i "/Image\=.*$/c Image\={{ IMAGE }}" /etc/containers/systemd/users/${UID}/podmansh.container + podman pull {{ IMAGE }} + podman rm -f podmansh + systemctl --user daemon-reload + systemctl --user start podmansh.service + echo "Image now switched to {{ IMAGE }}" # Run pytorch pytorch: - echo 'Follow the prompts and check the tutorial: https://docs.anaconda.com/free/anaconda/jupyter-notebooks/' - podman pull docker.io/continuumio/miniconda3 - podman run -i -t -p 8888:8888 docker.io/continuumio/miniconda3 /bin/bash -c "/opt/conda/bin/conda install jupyter -y --quiet && mkdir \ - /opt/notebooks && /opt/conda/bin/jupyter notebook \ - --notebook-dir=/opt/notebooks --ip='*' --port=8888 \ - --no-browser --allow-root" + echo 'Follow the prompts and check the tutorial: https://docs.anaconda.com/free/anaconda/jupyter-notebooks/' + podman pull docker.io/continuumio/miniconda3 + podman run -i -t -p 8888:8888 docker.io/continuumio/miniconda3 /bin/bash -c "/opt/conda/bin/conda install jupyter -y --quiet && mkdir \ + /opt/notebooks && /opt/conda/bin/jupyter notebook \ + --notebook-dir=/opt/notebooks --ip='*' --port=8888 \ + --no-browser --allow-root" # Run Tensorflow -tensorflow: - echo 'Follow the prompts and check the tutorial: https://www.tensorflow.org/tutorials/quickstart/beginner' - podman pull docker.io/tensorflow/tensorflow:latest - podman run -it -p 8888:8888 docker.io/tensorflow/tensorflow:latest-jupyter # Start Jupyter server +tensorflow: + echo 'Follow the prompts and check the tutorial: https://www.tensorflow.org/tutorials/quickstart/beginner' + podman pull docker.io/tensorflow/tensorflow:latest + podman run -it -p 8888:8888 docker.io/tensorflow/tensorflow:latest-jupyter # Start Jupyter server # Install a better on-screen-keyboard and gesture improvements touch: - pip install --upgrade gnome-extensions-cli - gext install improvedosk@nick-shmyrev.dev - gext install gestureImprovements@gestures + pip install --upgrade gnome-extensions-cli + gext install improvedosk@nick-shmyrev.dev + gext install gestureImprovements@gestures # A preview of what the update system would look like in the future update-ng: - echo 'Upgrading system...' - sudo bootc upgrade - echo 'Upgrading flatpaks...' - flatpak update -y - echo 'Assembling and replacing distroboxes ...' - distrobox assemble create --replace --file /etc/distrobox/distrobox.ini + echo 'Upgrading system...' + sudo bootc upgrade + echo 'Upgrading flatpaks...' + flatpak update -y + echo 'Assembling and replacing distroboxes ...' + distrobox assemble create --replace --file /etc/distrobox/distrobox.ini # Upgrade Distrobox to the latest git version distrobox-git: - echo 'Installing latest git snapshot of Distrobox' - curl -s https://raw.githubusercontent.com/89luca89/distrobox/main/install | sh -s -- --next --prefix ~/.local + echo 'Installing latest git snapshot of Distrobox' + curl -s https://raw.githubusercontent.com/89luca89/distrobox/main/install | sh -s -- --next --prefix ~/.local # Run the yafti setup tool yafti: - yafti /etc/yafti.yml --force + yafti /etc/yafti.yml --force # Switch to the zsh shell zsh: - sudo usermod $USER --shell /usr/bin/zsh - printf "${USER}'s shell is now %s." "$(cat /etc/passwd | grep ":$UID:" | cut '-d:' '-f7')" + sudo usermod $USER --shell /usr/bin/zsh + printf "${USER}'s shell is now %s." "$(cat /etc/passwd | grep ":$UID:" | cut '-d:' '-f7')" # Enable docker on the system docker: - sudo systemctl enable --now docker - sudo usermod -aG docker $USER - newgrp docker + sudo systemctl enable --now docker + sudo usermod -aG docker $USER + newgrp docker diff --git a/packages.json b/packages.json index e8a90773bfc..dca5020437f 100644 --- a/packages.json +++ b/packages.json @@ -4,9 +4,6 @@ "bluefin": [ "bash-color-prompt", "cockpit-bridge", - "ddccontrol-db", - "ddccontrol-gtk", - "ddccontrol", "evtest", "fish", "glow", @@ -16,11 +13,16 @@ "gnome-shell-extension-dash-to-dock", "gnome-shell-extension-gsconnect", "gnome-shell-extension-tailscale-status", + "gnome-shell-extension-logo-menu", + "hplip", + "ifuse", "input-remapper", "libgda-sqlite", "libgda", + "libimobiledevice", "libratbag-ratbagd", "libxcrypt-compat", + "make", "mesa-libGLU", "nautilus-gsconnect", "pulseaudio-utils", @@ -35,6 +37,7 @@ "tailscale", "tmux", "ublue-update", + "usbmuxd", "wireguard-tools", "xprop", "yaru-theme", @@ -43,8 +46,6 @@ ], "bluefin-dx": [ "adobe-source-code-pro-fonts", - "bison", - "byacc", "cascadiacode-nerd-fonts", "cockpit-machines", "cockpit-networkmanager", @@ -56,51 +57,34 @@ "cockpit-system", "code", "containerd.io", - "cscope", - "ctags", - "curl", - "cvs", "dbus-x11", - "diffstat", "docker-ce", "docker-ce-cli", "docker-buildx-plugin", "docker-compose-plugin", - "doxygen", "edk2-ovmf", - "edk2-ovmf", - "file", - "flex", - "gcc", - "gcc-c++", - "gcc-fortran", "genisoimage", - "gettext", - "git", "google-droid-sans-mono-fonts", "google-go-mono-fonts", "ibm-plex-mono-fonts", "incus", - "indent", - "intltool", + "incus-agent", "iotop", "jetbrains-mono-fonts-all", - "libtool", + "kcli", "libvirt", "lxc", "lxd-agent", "lxd", "mozilla-fira-mono-fonts", - "patch", - "patchutils", "p7zip-plugins", "p7zip", + "podman-compose", "podman-plugins", "podman-tui", "podmansh", "powerline-fonts", "powertop", - "procps-ng", "qemu-char-spice", "qemu-device-display-virtio-gpu", "qemu-device-display-virtio-vga", @@ -110,14 +94,10 @@ "qemu-user-binfmt", "qemu-user-static", "qemu", - "rcs", - "redhat-rpm-config", - "subversion", - "swig", - "systemtap", "ubuntu-nerd-fonts", "ubuntumono-nerd-fonts", - "virt-manager" + "virt-manager", + "virt-viewer" ] }, "exclude": { @@ -148,14 +128,16 @@ "39": { "include": { "bluefin": [ - "input-leap" + "input-leap", + "nautilus-open-any-terminal" ], "bluefin-dx": [], "bluefin-framework": [] }, "exclude": { "bluefin": [ - "podman-docker" + "podman-docker", + "gnome-terminal-nautilus" ], "bluefin-dx": [], "bluefin-framework": [] diff --git a/toolboxes/Containerfile.bluefin-cli b/toolboxes/Containerfile.bluefin-cli new file mode 100644 index 00000000000..5869946c343 --- /dev/null +++ b/toolboxes/Containerfile.bluefin-cli @@ -0,0 +1,21 @@ +FROM ghcr.io/ublue-os/wolfi-toolbox + +LABEL com.github.containers.toolbox="true" \ + usage="This image is meant to be used with the toolbox or distrobox command" \ + summary="A new cloud-native terminal experience powered by Wolfi and Homebrew" \ + maintainer="jorge.castro@gmail.com" + +COPY ./toolboxes/packages.bluefin-cli /toolbox-packages + +# Update image +RUN apk update && \ + apk upgrade + +# Add optional packages +RUN grep -v '^#' /toolbox-packages | xargs apk add + +RUN rm /toolbox-packages + +# Change root shell to BASH + +RUN sed -i -e '/^root/s/\/bin\/ash/\/bin\/bash/' /etc/passwd diff --git a/toolboxes/Containerfile.wolfi b/toolboxes/Containerfile.wolfi index e07f1e010a2..1c7241d014d 100644 --- a/toolboxes/Containerfile.wolfi +++ b/toolboxes/Containerfile.wolfi @@ -1,21 +1,9 @@ -# Observations 2023-10-09 -# -# * This container does NOT WORK correctly with the current distrobox 1.5.0.2 release, so -# first install the 'next' release (the main branch of the repo) by running -# just distrobox-git -# then close and reopen the terminal before setting up wolfi with -# just distrobox-wolfi -# -# * The initial 'distrobox enter wolfi' command invokes https://github.com/89luca89/distrobox/blob/main/distrobox-init -# which installs many basic packages and distrobox deps (starts at about line 400+). -# So there is no need to pre-install any dependency packages here and possibly induce conflicts. - FROM cgr.dev/chainguard/wolfi-base # Thanks to Nuno do Carmo for the initial prototype LABEL com.github.containers.toolbox="true" \ usage="This image is meant to be used with the toolbox or distrobox command" \ - summary="A new cloud-native terminal experience powered by Wolfi" \ + summary="A blank Wolfi distrobox, suitable for development" \ maintainer="jorge.castro@gmail.com" COPY ./toolboxes/packages.wolfi /toolbox-packages diff --git a/toolboxes/brew_script.bluefin-cli b/toolboxes/brew_script.bluefin-cli new file mode 100644 index 00000000000..ede4ecc32e4 --- /dev/null +++ b/toolboxes/brew_script.bluefin-cli @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +if [ ! -f /home/linuxbrew/.firstrun ] && [ -n "${BREW_PKGS}" ]; then + touch /home/linuxbrew/.firstrun + # `brew update-reset` is currently needed + # because somekind of issue with brew + brew update-reset + xargs brew install < "${HOME}"/"${BREW_PKGS}" +fi diff --git a/toolboxes/packages.bluefin-cli b/toolboxes/packages.bluefin-cli new file mode 100644 index 00000000000..d9bd46a6c59 --- /dev/null +++ b/toolboxes/packages.bluefin-cli @@ -0,0 +1,5 @@ +bash +#brew +git +procps +sudo-rs \ No newline at end of file diff --git a/toolboxes/packages.ubuntu b/toolboxes/packages.ubuntu index 3427f2e6f8c..8a141ed3816 100644 --- a/toolboxes/packages.ubuntu +++ b/toolboxes/packages.ubuntu @@ -1,22 +1,14 @@ bc -btop dbus-x11 direnv -ffmpeg fzf libegl1-mesa libgl1-mesa-glx libvte-common make -ncdu neofetch -neovim plocate progress -python-is-python3 -python3 -ripgrep -speedtest-cli apt-utils dialog dirmngr @@ -94,3 +86,4 @@ libxdmcp6 libxext6 libxfixes3 libxml2 +pigz diff --git a/toolboxes/packages.wolfi b/toolboxes/packages.wolfi index 7ecd9127b52..f582ccd2a88 100644 --- a/toolboxes/packages.wolfi +++ b/toolboxes/packages.wolfi @@ -1,2 +1,33 @@ -git -nano +bash +bzip2 +coreutils +curl +diffutils +findmnt +findutils +gnupg +gpg +iproute2 +iputils +keyutils +libcap +mount +ncurses +ncurses-terminfo +net-tools +openssh-client +pigz +posix-libc-utils +procps +rsync +su-exec +tcpdump +tree +tzdata +umount +util-linux +util-linux-misc +wget +xz +zip +vulkan-loader diff --git a/usr/bin/ublue-system-flatpak-manager b/usr/bin/ublue-system-flatpak-manager index d50a82167a9..76142f8f9c6 100755 --- a/usr/bin/ublue-system-flatpak-manager +++ b/usr/bin/ublue-system-flatpak-manager @@ -29,8 +29,8 @@ if [[ -n $INSTALL_LIST ]]; then fi fi -# Remove flatpaks in list -if [[ -n $REMOVE_LIST ]]; then +# Remove flatpaks in list once +if [[ ! -f $VER_FILE && -n $REMOVE_LIST ]]; then flatpak remove --system --noninteractive ${REMOVE_LIST[@]} fi diff --git a/usr/bin/ublue-user-flatpak-manager b/usr/bin/ublue-user-flatpak-manager index 66b47f71733..24340369896 100755 --- a/usr/bin/ublue-user-flatpak-manager +++ b/usr/bin/ublue-user-flatpak-manager @@ -27,8 +27,8 @@ if [[ -n $INSTALL_LIST ]]; then fi fi -# Remove flatpaks in list -if [[ -n $REMOVE_LIST ]]; then +# Remove flatpaks in list once +if [[ ! -f $VER_FILE && -n $REMOVE_LIST ]]; then flatpak remove --user --noninteractive ${REMOVE_LIST[@]} fi diff --git a/usr/bin/xdg-terminal-exec b/usr/bin/xdg-terminal-exec new file mode 100755 index 00000000000..2e1ebab7892 --- /dev/null +++ b/usr/bin/xdg-terminal-exec @@ -0,0 +1,9 @@ +#!/usr/bin/env bash + +if command -v /usr/bin/prompt > /dev/null; then + /usr/bin/prompt -- "$@" +elif grep '^org\.gnome\.Prompt$' <<< $(/usr/bin/flatpak list --app --columns=application); then + /usr/bin/flatpak run org.gnome.Prompt -- "$@" +else + /usr/bin/gnome-terminal -- "$@" +fi diff --git a/usr/etc/dconf/db/local.d/01-ublue b/usr/etc/dconf/db/local.d/01-ublue index 9e78e548af2..3f3fcdb9a80 100644 --- a/usr/etc/dconf/db/local.d/01-ublue +++ b/usr/etc/dconf/db/local.d/01-ublue @@ -1,10 +1,10 @@ [org/gnome/shell] favorite-apps = ['org.mozilla.firefox.desktop', 'org.mozilla.Thunderbird.desktop', 'org.gnome.Nautilus.desktop', 'org.gnome.Rhythmbox3.desktop', 'org.libreoffice.LibreOffice.writer.desktop', 'org.gnome.Software.desktop', 'code.desktop', 'ubuntu.desktop', 'yelp.desktop'] -enabled-extensions = ['appindicatorsupport@rgcjonas.gmail.com', 'dash-to-dock@micxgx.gmail.com', 'blur-my-shell@aunetx', 'gsconnect@andyholmes.github.io'] +enabled-extensions = ['appindicatorsupport@rgcjonas.gmail.com', 'dash-to-dock@micxgx.gmail.com', 'blur-my-shell@aunetx', 'gsconnect@andyholmes.github.io', 'logomenu@aryan_k'] [org/gnome/desktop/background] -picture-uri='file:///usr/share/backgrounds/bluefin/bluefin-autumn-dynamic.xml' -picture-uri-dark='file:///usr/share/backgrounds/bluefin/bluefin-autumn-dynamic.xml' +picture-uri='file:///usr/share/backgrounds/bluefin/bluefin-winter-dynamic.xml' +picture-uri-dark='file:///usr/share/backgrounds/bluefin/bluefin-winter-dynamic.xml' picture-options='zoom' primary-color='000000' secondary-color='FFFFFF' @@ -22,7 +22,7 @@ monospace-font-name="Ubuntu Mono 18" [org/gnome/desktop/sound] allow-volume-above-100-percent=true -theme-name="Yaru" +theme-name="freedesktop" [org/gnome/desktop/wm/preferences] button-layout=":minimize,maximize,close" @@ -52,15 +52,10 @@ customize-alphas=true max-alpha=0.8 min-alpha=0.5 -[org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0] -binding='t' -command='gnome-terminal' -name='gnome-terminal' - [org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1] binding='u' -command='flatpak run com.raggesilver.BlackBox --command "distrobox enter ubuntu"' -name='blackbox ubuntu' +command='xdg-terminal-exec -- distrobox enter ubuntu' +name='Ubuntu Prompt' [org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom2] binding='Escape' @@ -81,7 +76,7 @@ sort-directories-first=true sort-directories-first=true [org/gnome/mutter] -experimental-features=['variable-refresh-rate','scale-monitor-framebuffer'] +experimental-features=['scale-monitor-framebuffer'] [com/raggesilver/BlackBox] command-as-login-shell=true @@ -97,3 +92,15 @@ window-height=650 allow-updates=false download-updates=false download-updates-notify=false + +[com/github/stunkymonkey/nautilus-open-any-terminal] +terminal='prompt' +keybindings=['t'] +new-tab=false +flatpak='off' + +[org/gnome/shell/extensions/Logo-menu] +menu-button-icon-image=1 +menu-button-terminal='xdg-terminal-exec' +menu-button-system-monitor='flatpak run io.missioncenter.MissionCenter' +menu-button-extensions-app='com.mattjakeman.ExtensionManager.desktop' diff --git a/usr/etc/flatpak/user/install b/usr/etc/flatpak/user/install index 31c93a60b86..c4a26c34faa 100644 --- a/usr/etc/flatpak/user/install +++ b/usr/etc/flatpak/user/install @@ -1,6 +1,5 @@ org.mozilla.firefox org.freedesktop.Platform.ffmpeg-full//22.08 -com.raggesilver.BlackBox org.gnome.Calculator org.gnome.Calendar org.gnome.Characters diff --git a/usr/etc/sysctl.conf b/usr/etc/sysctl.conf new file mode 100644 index 00000000000..49156ecaf78 --- /dev/null +++ b/usr/etc/sysctl.conf @@ -0,0 +1 @@ +fs.file-max = 500000 diff --git a/usr/etc/yafti.yml b/usr/etc/yafti.yml index b7bd0b3b8e2..fe9abf265ea 100644 --- a/usr/etc/yafti.yml +++ b/usr/etc/yafti.yml @@ -82,9 +82,9 @@ screens: - "Install More Applications": run: /usr/bin/gnome-software - "Documentation": - run: /usr/bin/xdg-open https://universal-blue.org/images/bluefin/ + run: /usr/bin/xdg-open https://universal-blue.discourse.group/t/introduction-to-bluefin/41 - "Discussions and Announcements": - run: /usr/bin/xdg-open https://github.com/orgs/ublue-os/discussions/categories/bluefin + run: /usr/bin/xdg-open https://universal-blue.discourse.group/c/bluefin/6 - "Join the Discord Community": run: /usr/bin/xdg-open https://discord.gg/XjG48C7VHx description: |