diff --git a/SOURCES/com.redhat.Kiosk.Script.desktop b/SOURCES/com.redhat.Kiosk.Script.desktop new file mode 100644 index 0000000..8eb08d0 --- /dev/null +++ b/SOURCES/com.redhat.Kiosk.Script.desktop @@ -0,0 +1,5 @@ +[Desktop Entry] +Name=Kiosk +Type=Application +Exec=redhat-kiosk + diff --git a/SOURCES/com.redhat.Kiosk.WindowManager.desktop b/SOURCES/com.redhat.Kiosk.WindowManager.desktop new file mode 100644 index 0000000..29aa7b3 --- /dev/null +++ b/SOURCES/com.redhat.Kiosk.WindowManager.desktop @@ -0,0 +1,13 @@ +[Desktop Entry] +Type=Application +Name=Mutter +Comment=Window manager +Exec=/usr/bin/mutter +Categories=GNOME;GTK;Core; +OnlyShowIn=GNOME; +NoDisplay=true +X-GNOME-Autostart-Phase=DisplayServer +X-GNOME-Provides=windowmanager; +X-GNOME-Autostart-Notify=true +X-GNOME-AutoRestart=false +X-GNOME-HiddenUnderSystemd=true diff --git a/SOURCES/com.redhat.Kiosk.desktop b/SOURCES/com.redhat.Kiosk.desktop new file mode 100644 index 0000000..2684a46 --- /dev/null +++ b/SOURCES/com.redhat.Kiosk.desktop @@ -0,0 +1,6 @@ +[Desktop Entry] +Name=Kiosk +Comment=Kiosk mode +Exec=/usr/bin/gnome-session --session=redhat-kiosk +DesktopNames=Red-Hat-Kiosk;GNOME; + diff --git a/SOURCES/redhat-kiosk b/SOURCES/redhat-kiosk new file mode 100755 index 0000000..154df7c --- /dev/null +++ b/SOURCES/redhat-kiosk @@ -0,0 +1,26 @@ +#!/bin/sh + +if [ ! -e ~/.local/bin/redhat-kiosk ]; then + mkdir -p ~/.local/bin ~/.config + cat > ~/.local/bin/redhat-kiosk << EOF +#!/bin/sh +# This script is located in ~/.local/bin. +# It's provided as an example script to show how +# the kiosk session works. At the moment, the script +# just starts a text editor open to itself, but it +# should get customized to instead start a full screen +# application designed for the kiosk deployment. +# The "while true" bit just makes sure the application gets +# restarted if it dies for whatever reason. + +while true; do + gedit ~/.local/bin/redhat-kiosk +done + +EOF + + chmod +x ~/.local/bin/redhat-kiosk + touch ~/.config/gnome-initial-setup-done +fi + +exec ~/.local/bin/redhat-kiosk "$@" diff --git a/SOURCES/redhat-kiosk.session b/SOURCES/redhat-kiosk.session new file mode 100644 index 0000000..7e7fdbe --- /dev/null +++ b/SOURCES/redhat-kiosk.session @@ -0,0 +1,3 @@ +[GNOME Session] +Name=Kiosk +RequiredComponents=com.redhat.Kiosk.WindowManager;com.redhat.Kiosk.Script; diff --git a/SPECS/gnome-session.spec b/SPECS/gnome-session.spec index bf1e840..0e52022 100644 --- a/SPECS/gnome-session.spec +++ b/SPECS/gnome-session.spec @@ -9,7 +9,7 @@ Name: gnome-session Version: 3.28.1 -Release: 8%{?dist} +Release: 9%{?dist} Summary: GNOME session manager License: GPLv2+ @@ -17,6 +17,11 @@ URL: http://www.gnome.org Source0: http://download.gnome.org/sources/gnome-session/3.28/%{name}-%{version}.tar.xz Source1: gnome.desktop Source2: gnome-xorg.desktop +Source3: com.redhat.Kiosk.WindowManager.desktop +Source4: com.redhat.Kiosk.Script.desktop +Source5: com.redhat.Kiosk.desktop +Source6: redhat-kiosk.session +Source7: redhat-kiosk # Blacklist NV30: https://bugzilla.redhat.com/show_bug.cgi?id=745202 Patch1: gnome-session-3.3.92-nv30.patch @@ -85,6 +90,17 @@ Requires: xorg-x11-server-Xwayland%{?_isa} %description wayland-session Desktop file to add GNOME on wayland to display manager session menu. +%package kiosk-session +Summary: Desktop file for mutter based kiosk session +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: mutter +Recommends: gedit +Recommends: gnome-terminal +Recommends: gnome-control-center + +%description kiosk-session +Desktop file to add basic session used for setting up kiosk applications. + %prep %autosetup -p1 @@ -105,6 +121,12 @@ cp $RPM_SOURCE_DIR/gnome.desktop $RPM_BUILD_ROOT%{_datadir}/wayland-sessions cp $RPM_SOURCE_DIR/gnome-xorg.desktop $RPM_BUILD_ROOT%{_datadir}/xsessions cp $RPM_SOURCE_DIR/gnome-xorg.desktop $RPM_BUILD_ROOT%{_datadir}/xsessions/gnome.desktop +install -D $RPM_SOURCE_DIR/com.redhat.Kiosk.WindowManager.desktop -t $RPM_BUILD_ROOT/%{_datadir}/applications +install -D $RPM_SOURCE_DIR/com.redhat.Kiosk.Script.desktop -t $RPM_BUILD_ROOT%{_datadir}/applications +install -D $RPM_SOURCE_DIR/com.redhat.Kiosk.desktop -t $RPM_BUILD_ROOT%{_datadir}/xsessions +install -D $RPM_SOURCE_DIR/redhat-kiosk.session -t $RPM_BUILD_ROOT%{_datadir}/gnome-session/sessions +install -D $RPM_SOURCE_DIR/redhat-kiosk -t $RPM_BUILD_ROOT%{_bindir} + %find_lang %{po_package} %ldconfig_scriptlets @@ -115,6 +137,13 @@ cp $RPM_SOURCE_DIR/gnome-xorg.desktop $RPM_BUILD_ROOT%{_datadir}/xsessions/gnome %files wayland-session %{_datadir}/wayland-sessions/* +%files kiosk-session +%{_datadir}/applications/com.redhat.Kiosk.WindowManager.desktop +%{_datadir}/applications/com.redhat.Kiosk.Script.desktop +%{_datadir}/xsessions/com.redhat.Kiosk.desktop +%{_datadir}/gnome-session/sessions/redhat-kiosk.session +%{_bindir}/redhat-kiosk + %files -f %{po_package}.lang %doc AUTHORS NEWS README %license COPYING @@ -131,6 +160,11 @@ cp $RPM_SOURCE_DIR/gnome-xorg.desktop $RPM_BUILD_ROOT%{_datadir}/xsessions/gnome %{_datadir}/glib-2.0/schemas/org.gnome.SessionManager.gschema.xml %changelog +* Tue May 19 2020 Ray Strode - 3.28.1-9 +- Add kiosk-session subpackage to help users set up RHEL for + kiosk/point-of-sale use. + Resolves: #1739556 + * Wed Nov 20 2019 Tomas Pelka - 3.28.1-8 - rebuild and version bump to avoid future conflict with z-stream version Resolves: #1745147