chore: Support loading dconfs

Converts gschema overrides to dconfs
This commit is contained in:
fiftydinar 2024-09-29 11:20:52 +02:00
parent 5e5e2259ef
commit 4d94d284b7
6 changed files with 104 additions and 10 deletions

View File

@ -722,6 +722,22 @@ RUN rm -f /etc/profile.d/toolbox.sh && \
echo "import \"/usr/share/ublue-os/just/84-bazzite-virt.just\"" >> /usr/share/ublue-os/justfile && \
echo "import \"/usr/share/ublue-os/just/85-bazzite-image.just\"" >> /usr/share/ublue-os/justfile && \
echo "import \"/usr/share/ublue-os/just/90-bazzite-de.just\"" >> /usr/share/ublue-os/justfile && \
if grep -q "kinoite" <<< "${BASE_IMAGE_NAME}"; then \
mkdir -p "/usr/share/ublue-os/dconfs/desktop-kinoite/" && \
cp "/usr/share/glib-2.0/schemas/zz0-"*"-bazzite-desktop-kinoite-"*".gschema.override" "/usr/share/ublue-os/dconfs/desktop-kinoite/" && \
find "/etc/dconf/db/distro.d/" -maxdepth 1 -type f -exec cp {} "/usr/share/ublue-os/dconfs/desktop-kinoite/" \; && \
dconf-override-converter to-dconf "/usr/share/ublue-os/dconfs/desktop-kinoite/zz0-"*"-bazzite-desktop-kinoite-"*".gschema.override" && \
rm "/usr/share/ublue-os/dconfs/desktop-kinoite/zz0-"*"-bazzite-desktop-kinoite-"*".gschema.override" && \
zz0-00-bazzite-desktop-silverblue-global.gschema.override
; else \
mkdir -p "/usr/share/ublue-os/dconfs/desktop-silverblue/" && \
cp "/usr/share/glib-2.0/schemas/zz0-"*"-bazzite-desktop-silverblue-"*".gschema.override" "/usr/share/ublue-os/dconfs/desktop-silverblue/" && \
find "/etc/dconf/db/distro.d/" -maxdepth 1 -type f -exec cp {} "/usr/share/ublue-os/dconfs/desktop-silverblue/" \; && \
dconf-override-converter to-dconf "/usr/share/ublue-os/dconfs/desktop-silverblue/zz0-"*"-bazzite-desktop-silverblue-"*".gschema.override" && \
# Replace sort-directories-first to be compatible with dconf
sed -i 's/\[org.gtk.Settings.FileChooser\]/\[org\/gtk\/settings\/file-chooser\]/g; s/\[org.gtk.gtk4.Settings.FileChooser\]/\[org\/gtk\/gtk4\/settings\/file-chooser\]/g' "zz0-00-bazzite-desktop-silverblue-global.gschema.override"
rm "/usr/share/ublue-os/dconfs/desktop-silverblue/zz0-"*"-bazzite-desktop-silverblue-"*".gschema.override" && \
; fi && \
sed -i 's/stage/none/g' /etc/rpm-ostreed.conf && \
sed -i 's@enabled=1@enabled=0@g' /etc/yum.repos.d/_copr_ublue-os-akmods.repo && \
sed -i 's@enabled=1@enabled=0@g' /etc/yum.repos.d/_copr_kylegospo-bazzite.repo && \
@ -905,6 +921,13 @@ RUN /usr/libexec/containerbuild/image-info && \
systemctl disable gdm.service && \
systemctl enable sddm.service \
; fi && \
if grep -q "silverblue" <<< "${BASE_IMAGE_NAME}"; then \
mkdir -p "/usr/share/ublue-os/dconfs/deck-silverblue/" && \
cp "/usr/share/glib-2.0/schemas/zz0-"*"-bazzite-deck-silverblue-"*".gschema.override" "/usr/share/ublue-os/dconfs/deck-silverblue/" && \
find "/etc/dconf/db/distro.d/" -maxdepth 1 -type f -exec cp {} "/usr/share/ublue-os/dconfs/deck-silverblue/" \; && \
dconf-override-converter to-dconf "/usr/share/ublue-os/dconfs/deck-silverblue/zz0-"*"-bazzite-deck-silverblue-"*".gschema.override" && \
rm "/usr/share/ublue-os/dconfs/deck-silverblue/zz0-"*"-bazzite-deck-silverblue-"*".gschema.override" && \
; fi && \
systemctl enable bazzite-autologin.service && \
systemctl enable wireplumber-workaround.service && \
systemctl enable wireplumber-sysconf.service && \
@ -975,6 +998,12 @@ RUN --mount=type=cache,dst=/var/cache/rpm-ostree \
# Cleanup & Finalize
RUN echo "import \"/usr/share/ublue-os/just/95-bazzite-nvidia.just\"" >> /usr/share/ublue-os/justfile && \
if grep -q "silverblue" <<< "${BASE_IMAGE_NAME}"; then \
mkdir -p "/usr/share/ublue-os/dconfs/nvidia-silverblue/" && \
cp "/usr/share/glib-2.0/schemas/zz0-"*"-bazzite-nvidia-silverblue-"*".gschema.override" "/usr/share/ublue-os/dconfs/nvidia-silverblue/" && \
dconf-override-converter to-dconf "/usr/share/ublue-os/dconfs/nvidia-silverblue/zz0-"*"-bazzite-nvidia-silverblue-"*".gschema.override" && \
rm "/usr/share/ublue-os/dconfs/nvidia-silverblue/zz0-"*"-bazzite-nvidia-silverblue-"*".gschema.override" && \
; fi && \
mkdir -p /var/tmp && chmod 1777 /var/tmp && \
/usr/libexec/containerbuild/image-info && \
/usr/libexec/containerbuild/build-initramfs && \

View File

@ -2,11 +2,7 @@
# Restore Bazzite customized DE settings
restore-gnome-de-settings:
dconf load / < /etc/dconf/db/local.d/02-bazzite-global
dconf load / < /etc/dconf/db/local.d/03-bazzite-dash
dconf load / < /etc/dconf/db/local.d/05-bazzite-extensions
dconf load / < /etc/dconf/db/local.d/06-bazzite-theme
dconf load / < /etc/dconf/db/local.d/07-bazzite-deck
dconf load / < /usr/share/ublue-os/dconfs/deck-silverblue/
# Restore Bazzite customized applications folders
restore-gnome-folders:

View File

@ -0,0 +1,72 @@
#!/usr/bin/env bash
# Function to convert .gschema.override to dconf
convert_to_dconf() {
local output_dir="${!#}" # Last argument as output directory
if [[ ! -d "$output_dir" ]]; then
output_dir="$(dirname "${1}")" # Default to input file's directory
fi
for input_file in "${@}"; do
if [[ "${input_file}" != *".gschema.override" ]]; then
printf "\e[1;31mERROR: ${input_file} is not a gschema override, so it can't be converted to dconf\e[0m\n" 1>&2
continue
fi
local output_file="${output_dir}/$(basename "${input_file%.gschema.override}")"
# Check if output file exists and rename if necessary
if [[ -e "${output_file}" ]]; then
output_file="${output_file}_$(date +%s)" # Append timestamp
fi
while IFS= read -r line; do
if [[ "${line}" =~ ^\[ ]]; then
line="${line//./\/}"
fi
echo "$line" >> "$output_file"
done < "${input_file}"
done
}
# Function to convert dconf to .gschema.override
convert_to_override() {
local output_dir="${!#}" # Last argument as output directory
if [[ ! -d "$output_dir" ]]; then
output_dir="$(dirname "${1}")" # Default to input file's directory
fi
for input_file in "${@}"; do
if [[ "${input_file}" == *".gschema.override" ]]; then
printf "\e[1;31mERROR: ${input_file} is a gschema override, there is no need to convert it to override again\e[0m\n" 1>&2
continue
fi
local output_file="${output_dir}/$(basename "${input_file%.dconf}.gschema.override")"
# Check if output file exists and rename if necessary
if [[ -e "${output_file}" ]]; then
output_file="${output_file}_$(date +%s)" # Append timestamp
fi
while IFS= read -r line; do
if [[ "${line}" =~ ^\[ ]]; then
line="${line//\//.}"
fi
echo "$line" >> "$output_file"
done < "${input_file}"
done
}
# Main script logic
if [[ "${1}" == "to-dconf" ]]; then
shift
convert_to_dconf "$@"
elif [[ "${1}" == "to-override" ]]; then
shift
convert_to_override "$@"
else
echo "Usage: dconf-override-converter {to-dconf|to-override} <input_file1> <input_file2> ... [output_directory]"
echo "If not specified:"
echo "Output directory: defaults to output directory where input files are located"
echo "WARNING: Wildcard is buggy when folders are present there, beware, will see how to fix"
fi

View File

@ -77,7 +77,7 @@ fi
if [[ ! -f "$BAZZITE_CONFIG_DIR/ptyxis-initialized" ]]; then
echo 'Configuring Ptyxis'
if [[ $BASE_IMAGE_NAME =~ "kinoite" ]]; then
dconf load / < /etc/dconf/db/local.d/02-bazzite-kde
dconf load / < /usr/share/ublue-os/dconfs/desktop-kinoite/
fi
touch "$BAZZITE_CONFIG_DIR/ptyxis-initialized"
fi

View File

@ -2,10 +2,7 @@
# Restore Bazzite customized DE settings
restore-gnome-de-settings:
dconf load / < /etc/dconf/db/local.d/02-bazzite-global
dconf load / < /etc/dconf/db/local.d/03-bazzite-dash
dconf load / < /etc/dconf/db/local.d/05-bazzite-extensions
dconf load / < /etc/dconf/db/local.d/06-bazzite-theme
dconf load / < /usr/share/ublue-os/dconfs/desktop-silverblue/
# Restore Bazzite customized applications folders
restore-gnome-folders: