{"id":27078760,"url":"https://github.com/marvin1099/user_updater","last_synced_at":"2026-05-10T03:52:16.623Z","repository":{"id":286354936,"uuid":"960709397","full_name":"marvin1099/user_updater","owner":"marvin1099","description":"A simple tool for automatic system updates using topgrade, featuring a background systemd service and a lightweight GUI to notify users of ongoing updates.","archived":false,"fork":false,"pushed_at":"2025-04-07T11:01:29.000Z","size":56,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-09T20:17:50.344Z","etag":null,"topics":["automation","bash","gui","linux","topgrade","update","updater","updates"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/marvin1099.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-04-04T23:05:51.000Z","updated_at":"2025-04-07T11:01:33.000Z","dependencies_parsed_at":"2025-04-05T23:31:32.455Z","dependency_job_id":null,"html_url":"https://github.com/marvin1099/user_updater","commit_stats":null,"previous_names":["marvin1099/user_updater"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marvin1099%2Fuser_updater","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marvin1099%2Fuser_updater/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marvin1099%2Fuser_updater/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marvin1099%2Fuser_updater/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/marvin1099","download_url":"https://codeload.github.com/marvin1099/user_updater/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248103907,"owners_count":21048246,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["automation","bash","gui","linux","topgrade","update","updater","updates"],"created_at":"2025-04-06T01:17:53.826Z","updated_at":"2026-05-10T03:52:16.615Z","avatar_url":"https://github.com/marvin1099.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"## **user_updater**\n\nA simple tool for automatic system updates using [`topgrade`](https://github.com/topgrade-rs/topgrade),\nfeaturing a background systemd service and lightweight GUI to notify users during updates.\n\n\u003e Unix-like systems only.  \n\u003e macOS *may* work, but it’s not officially supported.\n\n---\n\n### Features\n\n* Automatic system updates via [`topgrade`](https://github.com/topgrade-rs/topgrade)\n* Desktop GUI notifications (using `yad`)\n* Temporary passwordless `builder` user (name is randomized)\n* Secure by default — `builder` (temporary admin) has no login access and is removed after use\n* Systemd-based background service\n* Per-user autostart for GUI\n* Unobtrusive during normal use\n\n---\n\n### Why It’s Great for Casual Linux Users\n\nMany users forget to update or aren’t comfortable using the terminal.\n**user_updater** solves that by:\n\n* Updating the system in the background — no terminal needed (after install)\n* Showing a popup while updates run, so you know not to reboot\n* Keeping your system safe with zero input\n\nSafe by design:\n\n* Runs updates as a temporary system user\n* Doesn’t require repeated password prompts (only on first install)\n* Deletes the `builder` (temporary admin) user after each update\n\n---\n\n### Install\n\n**Simple install (requires sudo):**\n\n```bash\ncurl -s https://codeberg.org/marvin1099/user_updater/raw/branch/main/install.sh | sudo bash\n```\n\nDon’t have sudo yet?  \nUse this instead (requires root password first):\n\n```bash\ncurl -fsS https://codeberg.org/marvin1099/user_updater/raw/branch/main/get_dependencies.sh -o /tmp/get_dependencies.sh \u0026\u0026 chmod +x /tmp/get_dependencies.sh \u0026\u0026 su -c \"/tmp/get_dependencies.sh\" \u0026\u0026 curl -fsS https://codeberg.org/marvin1099/user_updater/raw/branch/main/install.sh | sudo bash; rm -f /tmp/get_dependencies.sh\n```\n\n**Install with options:**\n\n```bash\ncurl -s https://codeberg.org/marvin1099/user_updater/raw/branch/main/install.sh false \"\" true | sudo bash\n```\n\n* `false`: disables self-updates (default is true)  \n  When enabled it will updates updater scripts.\n* `\"\"`: leaves forced self-update setting unchanged (default is true)  \n  When enabled it will force script updates.\n* `true`: enables service file reactivation (default is true)  \n  When enabled will enable the systemd service file on manual update.\n\n---\n\n### Trust \u0026 Transparency\n\n**user_updater** is licensed under the **AGPLv3** — it’s free, open source, and fully auditable.\n\n* No tracking\n* No hidden behavior\n* No vendor lock-in\n* Just read the scripts — everything is in plain Bash\n\n---\n\n### Dependencies\n\nInstalled automatically if possible:\n\n```\ngit awk sudo topgrade yad systemd\n```\n\nFallback: install them using your distro’s package manager (`pacman`, `apt`, `dnf`, etc.)\n\nCommon required Unix tools (typically preinstalled):\n\n```\ncd mkdir dirname touch cat id rm kill who sleep read ps readlink mktemp basename useradd chown chmod passwd getent usermod tail head grep cut ls date stat yes tee\n```\n\n---\n\n### How It Works\n\n1. **Systemd initiates the update script:**  \n   A service runs the update script in the background.\n\n2. **Creates a temp user:**  \n   A randomized `builder` user with passwordless sudo access, runs the updates over `topgrade`.\n\n3. **GUI notifies users:**  \n   A popup appears for each logged-in desktop user.\n\n4. **Cleans up afterward:**  \n   The temporary user is deleted to remove access and risk.\n\n---\n\n### After Installation\n\n* **Restart or log out/in** to enable background and GUI updates.\n* Adding new users? Restart once (to register them), then again (or log out/in) for GUI activation.\n\nTo register users manually:\n\n```bash\nsudo /var/lib/user_updater/register_updater_gui.sh\n```\n\nTo launch the GUI manually (as the target user / new user):\n\n```bash\n/home/$USER/.config/user_updater/gui_report.sh \u0026 disown\n```\n\nTo reregister and start the gui on the running user (new user), you can also use Reinstall (see bellow).\n\n---\n\n### File Locations \u0026 Maintenance\n\n* Reinstall by running (The options listed at the end of the Install section can be used here as well):\n\n  ```bash\n  sudo /var/lib/user_updater/install.sh\n  ```\n\n* Manually trigger update:\n\n  ```bash\n  sudo systemctl start user_updater\n  ```\n\n* App directory:\n  ```bash\n  /var/lib/user_updater\n  ```\n\n* Log files:\n  ```bash\n  /var/lib/user_updater/logs/\n  ```\n\n* Uninstall completely (removes all logs, exept /tmp/user_updater_uninstaller.log):\n\n  ```bash\n  sudo /var/lib/user_updater/uninstall.sh\n  ```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarvin1099%2Fuser_updater","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmarvin1099%2Fuser_updater","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarvin1099%2Fuser_updater/lists"}