Raspberry Pi Switch Chromium Browser Tabs
Switch browser tabs without browser extensions or plugins, using xdotool
and crontab.
Introduction
A common Raspberry Pi use case is to run Chromium browser full screen as a digital sign.
The following instructions will use the xdotool
to send keypresses to switch browser tabs. The commands will be saved in a shell script. The shell can be triggered by crontab or input from GPIO.
Setup and Configure
It is assumed that Raspbian Buster desktop has been installed with Chromium and setup to automatically login the user pi
to the desktop.
Tested with the following versions:
- Raspbian, Buster desktop version 2019-07-10
- Chromium version 74.0.3729.157
- xdotool version 3.20160805.1
Starting Chromium
To start Chromium in kiosk mode, create a customized autostart
file:
mkdir -p ~/.config/lxsession/LXDE-pi
cp /etc/xdg/lxsession/LXDE-pi/autostart ~/.config/lxsession/LXDE-pi
vi ~/.config/lxsession/LXDE-pi/autostart
@lxpanel --profile LXDE-pi
@pcmanfm --desktop --profile LXDE-pi
# CHANGED
#@xscreensaver -no-splash
@point-rpi
# BEGIN ADDED
@/usr/bin/chromium-browser --incognito --start-maximized --kiosk https://blog.gordonturner.com https://google.com
@unclutter
@xset s off
@xset s noblank
@xset -dpms
# END ADDED
This should start Chromium in incongnito, maximized, in kiosk mode with two tabs (https://blog.gordonturner.com & https://google.com).
Additionally, screen blanking and screensavers are disabled and the mouse cursor is hidden.
xdotool Script
To install xdotool
run the following:
sudo apt-get install xdotool -y
Now edit the shell script to toggle tabs, this script will be in the /home/pi
directory.
vi ~/switch-tab.sh
#!/bin/bash
export DISPLAY=:0.0
export XAUTHORITY=/home/pi/.Xauthority
/usr/bin/xdotool key Ctrl+Shift+Tab
Make executable:
chmod u+x ~/switch-tab.sh
This will send the keypresses Ctrl+Shift+Tab
to the desktop application that has focus, which should be Chromium and switch to the next tab.
With Chromium fullscreen and with two tabs, test the script by calling it from a remotely connected ssh session:
./switch-tab.sh
Crontab
Finally, call the script automatically by creating a crontab entry for the pi
user.
As the user pi
, edit the crontab:
crontab -e
A couple of options, depending on how often the tabs should be switched, every 1, 2 or 5 minutes.
Run the switch-tab.sh
script every minute:
* * * * * /home/pi/switch-tab.sh
Run the switch-tab.sh
script every 2 minutes:
*/2 * * * * /home/pi/switch-tab.sh
Run the switch-tab.sh
script every 5 minutes
*/5 * * * * /home/pi/switch-tab.sh
Conclusion
That should be it, no browser plugin, just good old fashioned command line tools and crontab.
If you have setup lirc
, you can also configure irexec
to call the script and you have a remote control mapped to toggle the browser tabs.