156 lines
3.5 KiB
Bash
Executable File
156 lines
3.5 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -e
|
|
|
|
# ==========================================
|
|
# Linux Parental Control Installer
|
|
# ==========================================
|
|
|
|
if [ "$EUID" -ne 0 ]; then
|
|
echo "Please run with sudo:"
|
|
echo " sudo ./install.sh"
|
|
exit 1
|
|
fi
|
|
|
|
INSTALL_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
|
|
APP_NAME="Parental Control"
|
|
DESKTOP_FILE="/usr/share/applications/parental-control.desktop"
|
|
SERVICE_FILE="/etc/systemd/system/parental-control.service"
|
|
|
|
echo
|
|
echo "=========================================="
|
|
echo " Linux Parental Control Installer"
|
|
echo "=========================================="
|
|
echo
|
|
echo "Installing from:"
|
|
echo " $INSTALL_DIR"
|
|
echo
|
|
|
|
# ------------------------------------------
|
|
# 1. System dependencies
|
|
# ------------------------------------------
|
|
|
|
echo "[1/6] Installing system dependencies"
|
|
|
|
pacman -S --needed --noconfirm \
|
|
python \
|
|
python-pip
|
|
|
|
echo
|
|
echo "System dependencies installed."
|
|
|
|
# ------------------------------------------
|
|
# 2. Python virtual environment
|
|
# ------------------------------------------
|
|
|
|
echo
|
|
echo "[2/6] Creating Python virtual environment"
|
|
|
|
if [ ! -d "$INSTALL_DIR/.venv" ]; then
|
|
python -m venv "$INSTALL_DIR/.venv"
|
|
else
|
|
echo "Virtual environment already exists."
|
|
fi
|
|
|
|
echo
|
|
echo "Virtual environment ready."
|
|
|
|
# ------------------------------------------
|
|
# 3. Python dependencies
|
|
# ------------------------------------------
|
|
|
|
echo
|
|
echo "[3/6] Installing Python packages"
|
|
|
|
"$INSTALL_DIR/.venv/bin/python" -m pip install \
|
|
--upgrade pip
|
|
|
|
"$INSTALL_DIR/.venv/bin/python" -m pip install \
|
|
-r "$INSTALL_DIR/requirements.txt"
|
|
|
|
echo
|
|
echo "Python packages installed."
|
|
|
|
# ------------------------------------------
|
|
# 4. Install systemd service
|
|
# ------------------------------------------
|
|
|
|
echo
|
|
echo "[4/6] Installing systemd service"
|
|
|
|
sed \
|
|
"s|%INSTALL_DIR%|$INSTALL_DIR|g" \
|
|
"$INSTALL_DIR/parental-control.service" \
|
|
> "$SERVICE_FILE"
|
|
|
|
chmod 644 "$SERVICE_FILE"
|
|
|
|
systemctl daemon-reload
|
|
systemctl enable parental-control.service
|
|
systemctl restart parental-control.service
|
|
|
|
echo
|
|
echo "Systemd service installed and started."
|
|
|
|
# ------------------------------------------
|
|
# 5. Install desktop application
|
|
# ------------------------------------------
|
|
|
|
echo
|
|
echo "[5/6] Installing application launcher"
|
|
|
|
cat > "$DESKTOP_FILE" <<EOF
|
|
[Desktop Entry]
|
|
Name=$APP_NAME
|
|
Comment=Linux Parental Control Manager
|
|
Exec=$INSTALL_DIR/.venv/bin/python -m desktop.main
|
|
Path=$INSTALL_DIR
|
|
Icon=preferences-system-parental-controls
|
|
Terminal=false
|
|
Type=Application
|
|
Categories=Settings;
|
|
StartupNotify=true
|
|
EOF
|
|
|
|
chmod 644 "$DESKTOP_FILE"
|
|
|
|
echo
|
|
echo "Desktop launcher installed:"
|
|
echo " $DESKTOP_FILE"
|
|
|
|
# ------------------------------------------
|
|
# 6. Update desktop database
|
|
# ------------------------------------------
|
|
|
|
echo
|
|
echo "[6/6] Updating application database"
|
|
|
|
if command -v update-desktop-database >/dev/null 2>&1; then
|
|
update-desktop-database /usr/share/applications
|
|
else
|
|
echo "update-desktop-database is not installed."
|
|
echo "Skipping desktop database update."
|
|
fi
|
|
|
|
# ------------------------------------------
|
|
# Verify installation
|
|
# ------------------------------------------
|
|
|
|
echo
|
|
echo "=========================================="
|
|
echo " Installation complete"
|
|
echo "=========================================="
|
|
echo
|
|
echo "Application:"
|
|
echo " $APP_NAME"
|
|
echo
|
|
echo "Launch it from your application menu."
|
|
echo "On your system:"
|
|
echo " Super + D"
|
|
echo
|
|
echo "Service:"
|
|
echo " systemctl status parental-control"
|
|
echo
|
|
echo "=========================================="
|