dyn user scripts
This commit is contained in:
parent
ac2fa1ab4e
commit
08dd69217d
@ -10,10 +10,10 @@
|
|||||||
### with docker (for test)
|
### with docker (for test)
|
||||||
```bash
|
```bash
|
||||||
# (Optional) Install docker if needed
|
# (Optional) Install docker if needed
|
||||||
curl -sSL get.docker.com | sh && sudo usermod -aG docker pi && logout # then login again
|
curl -sSL get.docker.com | sh && sudo usermod -aG docker $(whoami) && logout # then login again
|
||||||
|
|
||||||
# Prepare application data file tree
|
# Prepare application data file tree
|
||||||
mkdir -p obscreen/data/db obscreen/data/uploads && cd obscreen
|
cd ~ && mkdir -p obscreen/data/db obscreen/data/uploads && cd obscreen
|
||||||
|
|
||||||
# Run the Docker container
|
# Run the Docker container
|
||||||
docker run --rm --name obscreen --pull=always \
|
docker run --rm --name obscreen --pull=always \
|
||||||
@ -31,7 +31,7 @@ docker run --rm --name obscreen --pull=always \
|
|||||||
### or with docker-compose
|
### or with docker-compose
|
||||||
```bash
|
```bash
|
||||||
# Prepare application data file tree
|
# Prepare application data file tree
|
||||||
mkdir -p obscreen/data/db obscreen/data/uploads && cd obscreen
|
cd ~ && mkdir -p obscreen/data/db obscreen/data/uploads && cd obscreen
|
||||||
|
|
||||||
# Download docker-compose.yml
|
# Download docker-compose.yml
|
||||||
curl https://raw.githubusercontent.com/jr-k/obscreen/master/docker-compose.headless.yml > docker-compose.yml
|
curl https://raw.githubusercontent.com/jr-k/obscreen/master/docker-compose.headless.yml > docker-compose.yml
|
||||||
@ -73,7 +73,7 @@ python ./obscreen.py
|
|||||||
|
|
||||||
#### Start server forever with systemctl
|
#### Start server forever with systemctl
|
||||||
```bash
|
```bash
|
||||||
sudo ln -s "$(pwd)/system/obscreen-manager.service" /etc/systemd/system/obscreen-manager.service
|
cat "$(pwd)/system/obscreen-manager.service" | sed "s#/home/pi#$HOME#g" | sed "s#=pi#=$USER#g" | sudo tee /etc/systemd/system/obscreen-manager.service
|
||||||
sudo systemctl daemon-reload
|
sudo systemctl daemon-reload
|
||||||
sudo systemctl enable obscreen-manager.service
|
sudo systemctl enable obscreen-manager.service
|
||||||
sudo systemctl start obscreen-manager.service
|
sudo systemctl start obscreen-manager.service
|
||||||
|
|||||||
@ -12,7 +12,7 @@
|
|||||||
## 📺 Run the player
|
## 📺 Run the player
|
||||||
Install player autorun by executing following script
|
Install player autorun by executing following script
|
||||||
```bash
|
```bash
|
||||||
curl -fsSL https://raw.githubusercontent.com/jr-k/obscreen/master/system/install-autorun-rpi.sh | sudo bash
|
curl -fsSL https://raw.githubusercontent.com/jr-k/obscreen/master/system/install-autorun-rpi.sh | sudo bash -s -- $USER $HOME
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
@ -21,10 +21,10 @@ curl -fsSL https://raw.githubusercontent.com/jr-k/obscreen/master/system/install
|
|||||||
### with docker (for test)
|
### with docker (for test)
|
||||||
```bash
|
```bash
|
||||||
# (Optional) Install docker if needed
|
# (Optional) Install docker if needed
|
||||||
curl -sSL get.docker.com | sh && sudo usermod -aG docker pi && logout # then login again
|
curl -sSL get.docker.com | sh && sudo usermod -aG docker $(whoami) && logout # then login again
|
||||||
|
|
||||||
# Prepare application data file tree
|
# Prepare application data file tree
|
||||||
cd /home/pi && mkdir -p obscreen/data/db obscreen/data/uploads && cd obscreen
|
cd ~ && mkdir -p obscreen/data/db obscreen/data/uploads && cd obscreen
|
||||||
|
|
||||||
# Prepare player autostart file
|
# Prepare player autostart file
|
||||||
mkdir -p var/run && touch var/run/play && chmod +x var/run/play
|
mkdir -p var/run && touch var/run/play && chmod +x var/run/play
|
||||||
@ -45,7 +45,7 @@ docker run --rm --name obscreen --pull=always \
|
|||||||
### or with docker-compose
|
### or with docker-compose
|
||||||
```bash
|
```bash
|
||||||
# Prepare application data file tree
|
# Prepare application data file tree
|
||||||
cd /home/pi && mkdir -p obscreen/data/db obscreen/data/uploads obscreen/system && cd obscreen
|
cd ~ && mkdir -p obscreen/data/db obscreen/data/uploads obscreen/system && cd obscreen
|
||||||
|
|
||||||
# Prepare player autostart file
|
# Prepare player autostart file
|
||||||
mkdir -p var/run && touch var/run/play && chmod +x var/run/play
|
mkdir -p var/run && touch var/run/play && chmod +x var/run/play
|
||||||
@ -90,7 +90,7 @@ python ./obscreen.py
|
|||||||
|
|
||||||
#### Start server forever with systemctl
|
#### Start server forever with systemctl
|
||||||
```bash
|
```bash
|
||||||
sudo ln -s "$(pwd)/system/obscreen-manager.service" /etc/systemd/system/obscreen-manager.service
|
cat "$(pwd)/system/obscreen-manager.service" | sed "s#/home/pi#$HOME#g" | sed "s#=pi#=$USER#g" | sudo tee /etc/systemd/system/obscreen-manager.service
|
||||||
sudo systemctl daemon-reload
|
sudo systemctl daemon-reload
|
||||||
sudo systemctl enable obscreen-manager.service
|
sudo systemctl enable obscreen-manager.service
|
||||||
sudo systemctl start obscreen-manager.service
|
sudo systemctl start obscreen-manager.service
|
||||||
|
|||||||
@ -135,9 +135,9 @@ xset s noblank
|
|||||||
unclutter -display :0 -noevents -grab &
|
unclutter -display :0 -noevents -grab &
|
||||||
|
|
||||||
# Modify Chromium preferences to avoid restore messages
|
# Modify Chromium preferences to avoid restore messages
|
||||||
mkdir -p /home/pi/.config/chromium/Default 2>/dev/null
|
mkdir -p __HOME__/.config/chromium/Default 2>/dev/null
|
||||||
touch /home/pi/.config/chromium/Default/Preferences
|
touch __HOME__/.config/chromium/Default/Preferences
|
||||||
sed -i 's/"exited_cleanly": false/"exited_cleanly": true/' /home/pi/.config/chromium/Default/Preferences
|
sed -i 's/"exited_cleanly": false/"exited_cleanly": true/' __HOME__/.config/chromium/Default/Preferences
|
||||||
|
|
||||||
RESOLUTION=$(DISPLAY=:0 xrandr | grep '*' | awk '{print $1}')
|
RESOLUTION=$(DISPLAY=:0 xrandr | grep '*' | awk '{print $1}')
|
||||||
WIDTH=$(echo $RESOLUTION | cut -d 'x' -f 1)
|
WIDTH=$(echo $RESOLUTION | cut -d 'x' -f 1)
|
||||||
@ -145,6 +145,6 @@ HEIGHT=$(echo $RESOLUTION | cut -d 'x' -f 2)
|
|||||||
|
|
||||||
# Start Chromium in kiosk mode
|
# Start Chromium in kiosk mode
|
||||||
chromium-browser --disable-features=Translate --ignore-certificate-errors --disable-web-security --disable-restore-session-state --autoplay-policy=no-user-gesture-required --start-maximized --allow-running-insecure-content --remember-cert-error-decisions --noerrdialogs --kiosk --incognito --window-position=0,0 --window-size=${WIDTH},${HEIGHT} --display=:0 __PLAYER_URL__
|
chromium-browser --disable-features=Translate --ignore-certificate-errors --disable-web-security --disable-restore-session-state --autoplay-policy=no-user-gesture-required --start-maximized --allow-running-insecure-content --remember-cert-error-decisions --noerrdialogs --kiosk --incognito --window-position=0,0 --window-size=${WIDTH},${HEIGHT} --display=:0 __PLAYER_URL__
|
||||||
""".replace('__PLAYER_URL__', player_url)
|
""".replace('__PLAYER_URL__', player_url).replace('__HOME__', os.environ['HOME'])
|
||||||
with open(player_autostart_path, 'w') as file:
|
with open(player_autostart_path, 'w') as file:
|
||||||
file.write(xenv_presets)
|
file.write(xenv_presets)
|
||||||
|
|||||||
@ -3,6 +3,7 @@ import re
|
|||||||
import subprocess
|
import subprocess
|
||||||
import platform
|
import platform
|
||||||
|
|
||||||
|
|
||||||
from typing import Optional, List, Dict
|
from typing import Optional, List, Dict
|
||||||
from enum import Enum
|
from enum import Enum
|
||||||
from cron_descriptor import ExpressionDescriptor
|
from cron_descriptor import ExpressionDescriptor
|
||||||
|
|||||||
@ -1,12 +1,20 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
|
OWNER=${1:-$USER}
|
||||||
|
WORKING_DIR=${2:-$HOME}
|
||||||
|
|
||||||
|
echo "### Installing Obscreen Player ###"
|
||||||
|
echo "# Using user: $USER_ARG"
|
||||||
|
echo "# Working Directory: $WORKING_DIR"
|
||||||
|
echo "# ------------------------------ #"
|
||||||
|
|
||||||
# Update and install necessary packages
|
# Update and install necessary packages
|
||||||
apt update
|
apt update
|
||||||
apt install -y xinit xserver-xorg chromium-browser unclutter
|
apt install -y xinit xserver-xorg chromium-browser unclutter
|
||||||
|
|
||||||
# Add user pi to tty and video groups
|
# Add user to tty and video groups
|
||||||
usermod -aG tty pi
|
usermod -aG tty $OWNER
|
||||||
usermod -aG video pi
|
usermod -aG video $OWNER
|
||||||
|
|
||||||
# Configure Xwrapper
|
# Configure Xwrapper
|
||||||
touch /etc/X11/Xwrapper.config
|
touch /etc/X11/Xwrapper.config
|
||||||
@ -14,7 +22,7 @@ grep -qxF "allowed_users=anybody" /etc/X11/Xwrapper.config || echo "allowed_user
|
|||||||
grep -qxF "needs_root_rights=yes" /etc/X11/Xwrapper.config || echo "needs_root_rights=yes" | tee -a /etc/X11/Xwrapper.config
|
grep -qxF "needs_root_rights=yes" /etc/X11/Xwrapper.config || echo "needs_root_rights=yes" | tee -a /etc/X11/Xwrapper.config
|
||||||
|
|
||||||
# Create the systemd service to start Chromium in kiosk mode
|
# Create the systemd service to start Chromium in kiosk mode
|
||||||
curl https://raw.githubusercontent.com/jr-k/obscreen/master/system/obscreen-player.service | tee /etc/systemd/system/obscreen-player.service
|
curl https://raw.githubusercontent.com/jr-k/obscreen/master/system/obscreen-player.service | sed "s#/home/pi#$WORKING_DIR#g" | sed "s#=pi#=$OWNER#g" | tee /etc/systemd/system/obscreen-player.service
|
||||||
|
|
||||||
# Reload systemd, enable and start the service
|
# Reload systemd, enable and start the service
|
||||||
systemctl daemon-reload
|
systemctl daemon-reload
|
||||||
|
|||||||
@ -1,23 +0,0 @@
|
|||||||
|
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Disable screensaver and DPMS
|
|
||||||
xset s off
|
|
||||||
xset -dpms
|
|
||||||
xset s noblank
|
|
||||||
|
|
||||||
# Start unclutter to hide the mouse cursor
|
|
||||||
unclutter -display :0 -noevents -grab &
|
|
||||||
|
|
||||||
# Modify Chromium preferences to avoid restore messages
|
|
||||||
mkdir -p /home/pi/.config/chromium/Default 2>/dev/null
|
|
||||||
touch /home/pi/.config/chromium/Default/Preferences
|
|
||||||
sed -i 's/"exited_cleanly": false/"exited_cleanly": true/' /home/pi/.config/chromium/Default/Preferences
|
|
||||||
|
|
||||||
RESOLUTION=$(DISPLAY=:0 xrandr | grep '*' | awk '{print $1}')
|
|
||||||
WIDTH=$(echo $RESOLUTION | cut -d 'x' -f 1)
|
|
||||||
HEIGHT=$(echo $RESOLUTION | cut -d 'x' -f 2)
|
|
||||||
|
|
||||||
# Start Chromium in kiosk mode
|
|
||||||
chromium-browser --disable-features=Translate --ignore-certificate-errors --disable-web-security --disable-restore-session-state --autoplay-policy=no-user-gesture-required --start-maximized --allow-running-insecure-content --remember-cert-error-decisions --noerrdialogs --kiosk --incognito --window-position=0,0 --window-size=${WIDTH},${HEIGHT} --display=:0 http://localhost:5000
|
|
||||||
|
|
||||||
Loading…
Reference in New Issue
Block a user