diff --git a/UPCOMING_RELEASE.md b/UPCOMING_RELEASE.md index e69de29..fdb580d 100644 --- a/UPCOMING_RELEASE.md +++ b/UPCOMING_RELEASE.md @@ -0,0 +1 @@ +# Upcoming Release Notes diff --git a/pyproject.toml b/pyproject.toml index db8814d..ac5a773 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -14,7 +14,7 @@ voxvera = ["templates/**", "src/**", "resources/**", "locales/**", "resources/bi [project] name = "voxvera" -version = "0.3.6" +version = "0.3.7" description = "VoxVera CLI utilities" readme = "README.md" authors = [{name = "VoxVera"}] diff --git a/site/download/voxvera-source.zip b/site/download/voxvera-source.zip index b01f2fc..b20ce22 100644 Binary files a/site/download/voxvera-source.zip and b/site/download/voxvera-source.zip differ diff --git a/voxvera/__init__.py b/voxvera/__init__.py index 9c819ef..2edeb97 100644 --- a/voxvera/__init__.py +++ b/voxvera/__init__.py @@ -1,7 +1,7 @@ import sys from pathlib import Path -__version__ = "0.3.6" +__version__ = "0.3.7" # Add the vendor directory to sys.path ONLY for PyInstaller (frozen) builds. # For pip/pipx installs the system/venv packages are correct and the vendored diff --git a/voxvera/platforms/linux.py b/voxvera/platforms/linux.py index a04fb74..a3aab15 100644 --- a/voxvera/platforms/linux.py +++ b/voxvera/platforms/linux.py @@ -124,14 +124,38 @@ Persistent=true ["systemctl", "--user", "disable", "--now", "voxvera.service"], ["systemctl", "--user", "enable", "--now", "voxvera-start.timer"], ["systemctl", "--user", "start", "voxvera-start.service"], - ["loginctl", "enable-linger", os.environ.get("USER", "")], ] for command in commands: try: - subprocess.run(command, check=False, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) + subprocess.run( + command, + check=False, + stdin=subprocess.DEVNULL, + stdout=subprocess.DEVNULL, + stderr=subprocess.DEVNULL, + timeout=10, + ) except Exception: pass + linger_output = "" + try: + result = subprocess.run( + ["loginctl", "show-user", os.environ.get("USER", ""), "--property=Linger", "--value"], + check=False, + stdin=subprocess.DEVNULL, + stdout=subprocess.PIPE, + stderr=subprocess.DEVNULL, + text=True, + timeout=5, + ) + linger_output = (result.stdout or "").strip() + if linger_output == "no": + print("Note: user linger is not enabled. The recovery timer will run while you are logged in.") + print(" To enable boot-time user services, run: sudo loginctl enable-linger $USER") + except Exception: + pass + print(f"Systemd user service installed: {self.service_path}") print(f"Systemd user timer installed: {self.timer_path}") print("Sites will be retried automatically after boot and every few minutes.")