Difference between revisions of "Web Kiosk CentOS 7"
Michael.mast (talk | contribs) |
Michael.mast (talk | contribs) |
||
(46 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
==Purpose== | ==Purpose== | ||
− | + | Boot into Chrome Kiosk mode and display a web page for digital signage. | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
==Setup== | ==Setup== | ||
===Packages=== | ===Packages=== | ||
− | A fresh install of CentOS 7 | + | A fresh install of CentOS 7 minimal. Please note the following |
− | *x11 server did not install with the group install of Xfce, so it was installed | + | *x11 server did not install with the group install of Xfce, so it was installed separately. |
− | *<ref>https://bbs.archlinux.org/viewtopic.php?id=225780</ref>Keyboard and mouse did not work out the box, and I had to install the evdev drivers. | + | *<ref>https://bbs.archlinux.org/viewtopic.php?id=225780</ref>Keyboard and mouse did not work out the box, and I had to install the evdev drivers. |
+ | ====Base Packages==== | ||
<pre> | <pre> | ||
yum -y update | yum -y update | ||
yum -y install epel-release | yum -y install epel-release | ||
yum makecache | yum makecache | ||
− | yum -y install | + | yum -y install chromium wget zstd xorg-x11-xinit NetworkManager-wifi |
+ | </pre> | ||
+ | |||
+ | ====XFCE==== | ||
+ | <pre> | ||
yum -y group install Xfce | yum -y group install Xfce | ||
+ | yum -y install xorg-x11-drv-evdev xorg-x11-server-Xorg | ||
+ | </pre> | ||
+ | |||
+ | ====OpenBox (Preferred)==== | ||
+ | <ref>http://xinerama.blogspot.com/2018/09/installing-openbox-on-centos-75.html</ref> | ||
+ | <pre> | ||
+ | yum install -y openbox xorg-x11-drv-libinput xorg-x11-server-utils xorg-x11-xinit libev | ||
</pre> | </pre> | ||
+ | |||
+ | ====Unclutter==== | ||
*Install unclutter<ref>https://www.archlinux.org/packages/community/x86_64/unclutter/</ref><ref>https://stackoverflow.com/questions/660613/how-do-you-hide-the-mouse-pointer-under-linux-x11</ref>, this is useful for getting rid of the mouse pointer when not in use. | *Install unclutter<ref>https://www.archlinux.org/packages/community/x86_64/unclutter/</ref><ref>https://stackoverflow.com/questions/660613/how-do-you-hide-the-mouse-pointer-under-linux-x11</ref>, this is useful for getting rid of the mouse pointer when not in use. | ||
+ | *NOTE: I ran into issues downloading from archlinux, quick and dirty google search had me run across a git repo.<ref>https://ostechnix.com/auto-hide-mouse-pointer-using-unclutter-after-a-certain-time/#:~:text=Auto%20Hide%20Mouse%20Pointer%20Using%20Unclutter%20After%20A%20Certain%20Time%20In%20Linux&text=If%20the%20mouse%20cursor%20has,after%205%20seconds%20by%20default.</ref> | ||
+ | =====Repo method===== | ||
+ | This has not been fully tested and may contain bad code. | ||
<pre> | <pre> | ||
− | wget -O unclutter.tar https://www.archlinux.org/packages/community/x86_64/unclutter/download/ | + | yum install -y git libev-devel libX11-devel libXt-devel libXi-devel asciidoc |
+ | yum groupinstall "Development Tools" | ||
+ | git clone https://github.com/Airblader/unclutter-xfixes && cd unclutter-xfixes | ||
+ | mkdir /usr/share/licenses/unclutter/ | ||
+ | make | ||
+ | make install | ||
+ | </pre> | ||
+ | =====Arch method===== | ||
+ | <pre> | ||
+ | wget -O unclutter.tar.zst --content-disposition --max-redirect=5 https://www.archlinux.org/packages/community/x86_64/unclutter/download/ | ||
+ | zstd -d unclutter.tar.zst -o unclutter.tar | ||
tar -xf unclutter.tar | tar -xf unclutter.tar | ||
mv usr/bin/unclutter /usr/bin/unclutter | mv usr/bin/unclutter /usr/bin/unclutter | ||
rm -rf usr | rm -rf usr | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
</pre> | </pre> | ||
===TTY1 Autologin=== | ===TTY1 Autologin=== | ||
+ | ====TTY Config==== | ||
Now create the auto-login process. | Now create the auto-login process. | ||
<pre> | <pre> | ||
Line 69: | Line 68: | ||
fi | fi | ||
EOF | EOF | ||
− | + | </pre> | |
− | cat << EOF>>/ | + | ====Auto Start Window Manager==== |
− | exec | + | *Choose which one you want, startxfce4 or openbox-session. |
+ | <pre> | ||
+ | cat << EOF>>/home/publicuser/.xinitrc | ||
+ | exec openbox-session | ||
EOF | EOF | ||
− | |||
− | |||
</pre> | </pre> | ||
− | + | Reboot and you should see the desktop start up. If it does not troubleshoot. | |
− | ===Configure Chromium Auto- | + | ===Configure Chromium Auto-Start=== |
− | + | ====XFCE==== | |
<ref>https://www.danpurdy.co.uk/web-development/raspberry-pi-kiosk-screen-tutorial/</ref><ref>https://superuser.com/questions/461035/disable-google-chrome-session-restore-functionality</ref> | <ref>https://www.danpurdy.co.uk/web-development/raspberry-pi-kiosk-screen-tutorial/</ref><ref>https://superuser.com/questions/461035/disable-google-chrome-session-restore-functionality</ref> | ||
<pre> | <pre> | ||
Line 94: | Line 94: | ||
Categories= | Categories= | ||
OnlyShowIn=XFCE; | OnlyShowIn=XFCE; | ||
+ | EOF | ||
+ | </pre> | ||
+ | |||
+ | ====OpenBox==== | ||
+ | <pre> | ||
+ | mkdir -p /home/publicuser/.config/openbox | ||
+ | |||
+ | cat << EOF > /home/publicuser/.config/openbox/autostart | ||
+ | /usr/bin/xset -dpms s off s noblank & | ||
+ | /usr/bin/chromium-browser --user-data-dir=/home/publicuser --noerrdialogs --kiosk https://site.tld/webpage & | ||
+ | /usr/bin/unclutter & | ||
EOF | EOF | ||
</pre> | </pre> | ||
===Configure Power Settings and Disable Mouse Pointer=== | ===Configure Power Settings and Disable Mouse Pointer=== | ||
+ | *<b>NOTE :</b> This is configured for xfce. Another set of instructions will follow for openbox. | ||
We want to prevent the system from going to sleep, blanking the screen, loading the screen saver<ref>https://superuser.com/questions/644804/disable-screensaver-screen-blank-via-command-line</ref>, or showing the pointer on the screen. | We want to prevent the system from going to sleep, blanking the screen, loading the screen saver<ref>https://superuser.com/questions/644804/disable-screensaver-screen-blank-via-command-line</ref>, or showing the pointer on the screen. | ||
+ | <br> | ||
+ | One issue I am having is understanding the best method for exporting the display. I am too used to working in bash and not with a gui. The following export does not work, but the display settings appear to still work. | ||
+ | <br> | ||
+ | Initially the xset commands were getting ignored by xfce power management. In order to get around this I had to use xfconf-query<ref>https://askubuntu.com/questions/407287/change-xfce4-power-manager-option-from-terminal</ref> to make things stick | ||
*Create the script | *Create the script | ||
<pre> | <pre> | ||
Line 104: | Line 120: | ||
#!/bin/sh | #!/bin/sh | ||
sleep 10 | sleep 10 | ||
− | export DISPLAY=:0.0 | + | export DISPLAY=$(who | grep -E "publicuser pts\/[0-9]" | grep -Eo "\(:[0-9][.]?[0-9]?\)" | sed 's/(//; s/)//') |
− | + | xfconf-query -c xfce4-power-manager -p /xfce4-power-manager/dpms-enabled -s false | |
− | |||
− | |||
/usr/bin/unclutter -grab | /usr/bin/unclutter -grab | ||
EOF | EOF | ||
chmod +x /home/publicuser/power.sh | chmod +x /home/publicuser/power.sh | ||
+ | sed -i 's/<\/property>/\ \ <property\ name=\"blank-on-ac\"\ type=\"int\"\ value=\"0\"\/>\n&/g' /home/publicuser/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-power-manager.xml | ||
</pre> | </pre> | ||
*Create the auto-launch of the script. | *Create the auto-launch of the script. | ||
Line 127: | Line 142: | ||
Categories= | Categories= | ||
OnlyShowIn=XFCE; | OnlyShowIn=XFCE; | ||
+ | EOF | ||
+ | </pre> | ||
+ | ===Reload Chromium via CRON=== | ||
+ | Ran into an issue with flaky wifi and Chromium not reloading the page during a gateway timeout. Add a cron job for publicuser with the following | ||
+ | <pre> | ||
+ | @hourly DISPLAY=:0 /home/publicuser/restart.sh | ||
</pre> | </pre> | ||
− | + | Create the restart script at /home/publicuser/restart.sh | |
− | |||
− | |||
<pre> | <pre> | ||
− | + | #!/bin/bash | |
− | + | killall chromium-browser | |
− | + | sleep 1 | |
− | + | /usr/bin/chromium-browser --user-data-dir=/home/publicuser --noerrdialogs --kiosk https://site.tld/webpage & | |
− | |||
− | |||
− | |||
− | |||
</pre> | </pre> | ||
− | + | Mark executable | |
<pre> | <pre> | ||
− | + | chmod u+x /home/publicuser/restart.sh | |
− | |||
</pre> | </pre> | ||
− |
Latest revision as of 12:43, 18 May 2022
Contents
Purpose
Boot into Chrome Kiosk mode and display a web page for digital signage.
Setup
Packages
A fresh install of CentOS 7 minimal. Please note the following
- x11 server did not install with the group install of Xfce, so it was installed separately.
- [1]Keyboard and mouse did not work out the box, and I had to install the evdev drivers.
Base Packages
yum -y update yum -y install epel-release yum makecache yum -y install chromium wget zstd xorg-x11-xinit NetworkManager-wifi
XFCE
yum -y group install Xfce yum -y install xorg-x11-drv-evdev xorg-x11-server-Xorg
OpenBox (Preferred)
yum install -y openbox xorg-x11-drv-libinput xorg-x11-server-utils xorg-x11-xinit libev
Unclutter
- Install unclutter[3][4], this is useful for getting rid of the mouse pointer when not in use.
- NOTE: I ran into issues downloading from archlinux, quick and dirty google search had me run across a git repo.[5]
Repo method
This has not been fully tested and may contain bad code.
yum install -y git libev-devel libX11-devel libXt-devel libXi-devel asciidoc yum groupinstall "Development Tools" git clone https://github.com/Airblader/unclutter-xfixes && cd unclutter-xfixes mkdir /usr/share/licenses/unclutter/ make make install
Arch method
wget -O unclutter.tar.zst --content-disposition --max-redirect=5 https://www.archlinux.org/packages/community/x86_64/unclutter/download/ zstd -d unclutter.tar.zst -o unclutter.tar tar -xf unclutter.tar mv usr/bin/unclutter /usr/bin/unclutter rm -rf usr
TTY1 Autologin
TTY Config
Now create the auto-login process.
useradd publicuser rm /etc/systemd/system/getty.target.wants/getty@tty1.service cp /lib/systemd/system/getty@.service /etc/systemd/system/getty@tty1.service sed -i -e "s/\/sbin\/agetty/\0 --autologin publicuser/" /etc/systemd/system/getty@tty1.service ln -s /etc/systemd/system/getty@tty1.service /etc/systemd/system/getty.target.wants/getty@tty1.service cat << EOF >>/home/publicuser/.bash_profile if [[ -z \$DISPLAY ]] && [[ \$(tty) = /dev/tty1 ]]; then # Check if we have a display and we're on TTY1 startx else echo "Please contact the help desk and provide the following" echo "IP : " echo "Hostname : $hostname" fi EOF
Auto Start Window Manager
- Choose which one you want, startxfce4 or openbox-session.
cat << EOF>>/home/publicuser/.xinitrc exec openbox-session EOF
Reboot and you should see the desktop start up. If it does not troubleshoot.
Configure Chromium Auto-Start
XFCE
cat << EOF>>/etc/xdg/autostart/kiosk.desktop [Desktop Entry] Encoding=UTF-8 Name=Kiosk GenericName=program Comment=LobbyKiosk Exec=chromium-browser --noerrdialogs --kiosk http://siteurl.tld Icon=/usr/share/pixmaps/program.jpg Terminal=false Type=Application Categories= OnlyShowIn=XFCE; EOF
OpenBox
mkdir -p /home/publicuser/.config/openbox cat << EOF > /home/publicuser/.config/openbox/autostart /usr/bin/xset -dpms s off s noblank & /usr/bin/chromium-browser --user-data-dir=/home/publicuser --noerrdialogs --kiosk https://site.tld/webpage & /usr/bin/unclutter & EOF
Configure Power Settings and Disable Mouse Pointer
- NOTE : This is configured for xfce. Another set of instructions will follow for openbox.
We want to prevent the system from going to sleep, blanking the screen, loading the screen saver[8], or showing the pointer on the screen.
One issue I am having is understanding the best method for exporting the display. I am too used to working in bash and not with a gui. The following export does not work, but the display settings appear to still work.
Initially the xset commands were getting ignored by xfce power management. In order to get around this I had to use xfconf-query[9] to make things stick
- Create the script
cat << EOF>>/home/publicuser/power.sh #!/bin/sh sleep 10 export DISPLAY=$(who | grep -E "publicuser pts\/[0-9]" | grep -Eo "\(:[0-9][.]?[0-9]?\)" | sed 's/(//; s/)//') xfconf-query -c xfce4-power-manager -p /xfce4-power-manager/dpms-enabled -s false /usr/bin/unclutter -grab EOF chmod +x /home/publicuser/power.sh sed -i 's/<\/property>/\ \ <property\ name=\"blank-on-ac\"\ type=\"int\"\ value=\"0\"\/>\n&/g' /home/publicuser/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-power-manager.xml
- Create the auto-launch of the script.
cat << EOF>>/etc/xdg/autostart/power.desktop [Desktop Entry] Encoding=UTF-8 Name=powersettings GenericName=program3 Comment=DisablePower Exec=/home/publicuser/power.sh Icon=/usr/share/pixmaps/program.jpg Terminal=false Type=Application Categories= OnlyShowIn=XFCE; EOF
Reload Chromium via CRON
Ran into an issue with flaky wifi and Chromium not reloading the page during a gateway timeout. Add a cron job for publicuser with the following
@hourly DISPLAY=:0 /home/publicuser/restart.sh
Create the restart script at /home/publicuser/restart.sh
#!/bin/bash killall chromium-browser sleep 1 /usr/bin/chromium-browser --user-data-dir=/home/publicuser --noerrdialogs --kiosk https://site.tld/webpage &
Mark executable
chmod u+x /home/publicuser/restart.sh
- ↑ https://bbs.archlinux.org/viewtopic.php?id=225780
- ↑ http://xinerama.blogspot.com/2018/09/installing-openbox-on-centos-75.html
- ↑ https://www.archlinux.org/packages/community/x86_64/unclutter/
- ↑ https://stackoverflow.com/questions/660613/how-do-you-hide-the-mouse-pointer-under-linux-x11
- ↑ https://ostechnix.com/auto-hide-mouse-pointer-using-unclutter-after-a-certain-time/#:~:text=Auto%20Hide%20Mouse%20Pointer%20Using%20Unclutter%20After%20A%20Certain%20Time%20In%20Linux&text=If%20the%20mouse%20cursor%20has,after%205%20seconds%20by%20default.
- ↑ https://www.danpurdy.co.uk/web-development/raspberry-pi-kiosk-screen-tutorial/
- ↑ https://superuser.com/questions/461035/disable-google-chrome-session-restore-functionality
- ↑ https://superuser.com/questions/644804/disable-screensaver-screen-blank-via-command-line
- ↑ https://askubuntu.com/questions/407287/change-xfce4-power-manager-option-from-terminal