feat(gnome): Use GDM on desktop (#111)

* feat(gnome): Use GDM on desktop

Restores GDM on desktop and implements GNOME autologin with GDM support. This allows
users to use screen locking. Omitted from Steam Deck as there isn't a seemingly clean
way to implement this for session switching. Will investigate in the future

* fix(gnome): Restore patched xorg-x11-server-Xwayland package for VRR

---------

Co-authored-by: Kyle Gospodnetich <me@kylegospodneti.ch>
This commit is contained in:
RJ Trujillo 2023-08-06 15:31:03 -06:00 committed by GitHub
parent 56938e2c24
commit 9383c2fdb2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 45 additions and 13 deletions

View File

@ -78,16 +78,20 @@ RUN if grep -qv "gnome" <<< "${IMAGE_NAME}"; then \
rpm-ostree install \
steamdeck-kde-presets-desktop \
wallpaper-engine-kde-plugin \
kdeconnectd \
kdeconnectd && \
rpm-ostree override replace \
--experimental \
--from repo=copr:copr.fedorainfracloud.org:kylegospo:gnome-vrr \
xorg-x11-server-Xwayland.spec \
; else \
rpm-ostree override replace \
--experimental \
--from repo=copr:copr.fedorainfracloud.org:kylegospo:gnome-vrr \
mutter \
gnome-control-center \
gnome-control-center-filesystem && \
gnome-control-center-filesystem \
xorg-x11-server-Xwayland.spec && \
rpm-ostree install \
sddm \
steamdeck-backgrounds \
gradience \
adw-gtk3-theme \
@ -140,8 +144,6 @@ RUN rm /usr/share/applications/shredder.desktop && \
systemctl enable displaylink.service && \
systemctl enable input-remapper.service && \
if grep -q "gnome" <<< "${IMAGE_NAME}"; then \
systemctl disable gdm.service && \
systemctl enable sddm.service && \
rm /usr/share/applications/yad-icon-browser.desktop \
; fi && \
echo -e "IMAGE_NAME=${IMAGE_NAME}\nBASE_IMAGE_NAME=${BASE_IMAGE_NAME}\nIMAGE_FLAVOR=${IMAGE_FLAVOR}\nFEDORA_MAJOR_VERSION=${FEDORA_MAJOR_VERSION}" >> /etc/default/bazzite && \
@ -212,6 +214,7 @@ RUN if grep -qv "gnome" <<< "${IMAGE_NAME}"; then \
; else \
rpm-ostree install \
gnome-shell-extension-bazzite-menu \
sddm \
; fi
# Install new packages & dock updater - done manually due to proprietary parts preventing it from being on Copr
@ -256,6 +259,8 @@ RUN rm /usr/share/applications/winetricks.desktop && \
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 -q "gnome" <<< "${IMAGE_NAME}"; then \
systemctl disable gdm.service && \
systemctl enable sddm.service && \
systemctl enable gnome-autologin.service \
; fi && \
if grep -qv "gnome" <<< "${IMAGE_NAME}"; then \

View File

@ -0,0 +1,14 @@
#!/usr/bin/env bash
USER=$(id -nu 1000)
# SteamOS SDDM config
SDDM_CONF='/etc/sddm.conf.d/steamos.conf'
if [ ! -f ${SDDM_CONF} ]; then
# Fallback to sddm.conf
SDDM_CONF = '/etc/sddm.conf'
fi
# Configure autologin
sed -i 's/.*Session=.*/Session=gnome-xorg.desktop/g' ${SDDM_CONF}
sed -i 's/.*User=.*/User='${USER}'/g' ${SDDM_CONF}

View File

@ -0,0 +1,16 @@
# GDM configuration storage
[daemon]
#AutomaticLoginEnable=True
#AutomaticLogin=
#WaylandEnable=false
#DefaultSession=gnome-xorg
[security]
[xdmcp]
[chooser]
[debug]
#Enable=true

View File

@ -2,13 +2,10 @@
USER=$(id -nu 1000)
# SteamOS SDDM config
SDDM_CONF='/etc/sddm.conf.d/steamos.conf'
if [ ! -f ${SDDM_CONF} ]; then
# Fallback to sddm.conf
SDDM_CONF = '/etc/sddm.conf'
fi
# GDM config
GDM_CONF='/etc/gdm/custom.conf'
# Configure autologin
sed -i 's/.*Session=.*/Session=gnome-xorg.desktop/g' ${SDDM_CONF}
sed -i 's/.*User=.*/User='${USER}'/g' ${SDDM_CONF}
sed -i 's/.*AutomaticLoginEnable=.*/AutomaticLoginEnable=true/g' ${GDM_CONF}
sed -i 's/.*AutomaticLogin=.*/AutomaticLogin='${USER}'/g' ${GDM_CONF}
sed -i 's/.*DefaultSession=.*/DefaultSession=gnome-xorg/g' ${GDM_CONF}