dyn user scripts

This commit is contained in:
jr-k 2024-05-16 16:12:40 +02:00
parent ac2fa1ab4e
commit 08dd69217d
6 changed files with 26 additions and 40 deletions

View File

@ -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

View File

@ -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

View File

@ -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)

View File

@ -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

View File

@ -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

View File

@ -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