dyn user scripts
This commit is contained in:
parent
ac2fa1ab4e
commit
08dd69217d
@ -10,10 +10,10 @@
|
||||
### with docker (for test)
|
||||
```bash
|
||||
# (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
|
||||
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
|
||||
docker run --rm --name obscreen --pull=always \
|
||||
@ -31,7 +31,7 @@ docker run --rm --name obscreen --pull=always \
|
||||
### or with docker-compose
|
||||
```bash
|
||||
# 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
|
||||
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
|
||||
```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 enable obscreen-manager.service
|
||||
sudo systemctl start obscreen-manager.service
|
||||
|
||||
@ -12,7 +12,7 @@
|
||||
## 📺 Run the player
|
||||
Install player autorun by executing following script
|
||||
```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)
|
||||
```bash
|
||||
# (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
|
||||
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
|
||||
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
|
||||
```bash
|
||||
# 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
|
||||
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
|
||||
```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 enable obscreen-manager.service
|
||||
sudo systemctl start obscreen-manager.service
|
||||
|
||||
@ -135,9 +135,9 @@ xset s noblank
|
||||
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
|
||||
mkdir -p __HOME__/.config/chromium/Default 2>/dev/null
|
||||
touch __HOME__/.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}')
|
||||
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
|
||||
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:
|
||||
file.write(xenv_presets)
|
||||
|
||||
@ -3,6 +3,7 @@ import re
|
||||
import subprocess
|
||||
import platform
|
||||
|
||||
|
||||
from typing import Optional, List, Dict
|
||||
from enum import Enum
|
||||
from cron_descriptor import ExpressionDescriptor
|
||||
|
||||
@ -1,12 +1,20 @@
|
||||
#!/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
|
||||
apt update
|
||||
apt install -y xinit xserver-xorg chromium-browser unclutter
|
||||
|
||||
# Add user pi to tty and video groups
|
||||
usermod -aG tty pi
|
||||
usermod -aG video pi
|
||||
# Add user to tty and video groups
|
||||
usermod -aG tty $OWNER
|
||||
usermod -aG video $OWNER
|
||||
|
||||
# Configure Xwrapper
|
||||
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
|
||||
|
||||
# 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
|
||||
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