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

View File

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

View File

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

View File

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

View File

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

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