So we bought a few industrial all-in-one PCs from Chinese company QI YU TAI. These PCs came with pre-installed Windows, but because of possible legal issues, we decided to replace the Windows with Ubuntu.
Basic parameters of those PCs are:
- Various Celeron processors.
- Screen size from 12 inch, up to 19 inch.
- eGalaxTouch resistive touch layer.
- SSD hard disk.
In the beginning I planned to install Ubuntu with a default desktop environment, Unity. Unfortunately Unity lacks support for on screen keyboard, so I had to switch to Gnome Desktop, which seems to be the best option for a touch screen in the Linux world.
Instal Ubuntu Gnome 16.04.
Ubuntu homepage has several tutorials on creating a bootable USB stick.
Calibrate touch screen and save calibration, so it will be restored on every boot.
By default the touch screen has inverted axis. To calibrate it, follow tutorial on Ubuntu homepage https://wiki.ubuntu.com/Touchscreen
I've used following scripts to load calibration on start of the system. But, for example, you can run
xinput_calibratorwithout parameters, then follow printed instructions and store calibration as a X11 configuration.
# Put this into `/etc/xdg/autostart' directory. [Desktop Entry] Name=Calibrate Touch Screen Exec=/etc/xdg/autostart/calibrate-touch-screen.sh Terminal=false Type=Application X-GNOME-Autostart-enabled=true
#!/bin/sh # Put this into `/etc/xdg/autostart' directory. xinput set-int-prop "eGalax Inc. USB TouchController" "Evdev Axis Calibration" 32 1958 122 165 1903 xinput set-int-prop "eGalax Inc. USB TouchController" "Evdev Axes Swap" 8 0
Optionally, you can install driver from touch screen manufacturer's site to support multitouch, gestures and more features http://www.eeti.com.tw/drivers_Linux.html
Note: calibration of a rotated screen can be quite challenging. I had to do it manually by changing calibration values and by testing each configuration by hand.
Turn off all power saving and "lock a screen" features of the system.
- Settings -> Power: Turn off "Dim screen when inactive" option.
- Settings -> Power: Set "Blank screen" option to never.
- Settings -> Privacy: disable screen lock.
- Disable DPMS (Energy Start) by executing
xset s off -dpms. Actually you want to execute this command on each start of the system by adding it to Startup Applications.
- Disable suspend, according to Debian.org
sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target
- Disable a screen shield that makes you to unlock the screen when inactive for a while: https://github.com/lgpasquale/gnome-shell-extension-disable-screenshield
Disable crash reports, so user won't be bothered by a "crash report message" when something exceptional happens.
Do it by setting
enabledproperty to 0 in
Enable an on screen keyboard.
First you will need to install few packages, so QT applications like Firefox will have a support for touch.
apt-get install qt-at-spi caribou
Settings -> Universal Access: Turn on "Screen Keyboard" option.
Note: keyboard should disappear if you focus out of an input field. This does not wok in current release of
qt-at-spi. It was fixed just recently https://bugzilla.mozilla.org/show_bug.cgi?id=789038#c12
Show system's ip address on startup.
I want to show system's IP address on startup so administrator can easily connect to the machine via network, so he can manage it without need of external keyboard. To do that, just create a simple script that will get an ip address and displays it as a notification bubble via
notify-sendapplication. Then add this script to Startup Applications.
#!/bin/sh ip_addresses=$(ifconfig | grep -oE "inet addr:[0-9]+.[0-9]+.[0-9]+.[0-9]+") notify-send "$ip_addresses"
Set up Firefox for kiosk mode.
Install mKiosk plugin and configure it according to your needs.
Install Click Drag Scroll extension so you can scroll a page by simply dragging it.
Then add Firefox into Startup Applications.
Install Unclutter and hide mouse cursor.
apt-get install unclutter unclutter -idle 0.01
Or you can add it into Startup Applications.
Install SSH server to be able to connect to the machine remotely.
sudo apt-get install openssh-server