powerful but friendly backup program that runs in your tray, powered by restic devins.page/restray
go restic system-tray
2

Configure Feed

Select the types of activity you want to include in your feed.

chore: reorganize readme

intergrav (Jun 28, 2026, 6:17 AM EDT) 888f99ac bb5a768f

+17 -21
+17 -21
README.md
··· 1 - # restray 1 + # Restray 2 2 3 - A simple Go application that runs in the background/system tray, that can schedule and manage [restic](https://restic.net) backups and profiles easily. 3 + A simple Go application that runs in the background/system tray, that can schedule and manage [restic](https://restic.net) backups and profiles easily. It can also use multiple profiles with different schedules and settings at once. It's also pretty configurable, see config below. 4 4 5 5 Intended for desktops. Runs on MacOS, Windows, and Linux. If you're on GNOME, you will need to install [this extension](https://extensions.gnome.org/extension/615/appindicator-support) to interact with and use the app since GNOME doesn't natively support the system tray. 6 6 7 - This is new and somewhat work-in-progress/beta software. You might possibly encounter a bug or two that I haven't fixed yet, and if so, please make an issue. I don't really intend on adding many new features, but I will fix bugs and refine the codebase more over time. 7 + I needed a replacement for Time Machine, since it's painfully slow, only exclusive to Macs, and only supports SMB now. I quite it's simplicity and ease-of-use though. Looking for other solutions, restic appeared to be a great fit, and I already use it for my server. 8 8 9 - (Icon subject to maybe change in the future) 9 + However, I didn't find any option for scheduling restic backups that I actually liked. I did see [resticprofile](https://github.com/creativeprojects/resticprofile) which looks cool, and may be a better solution for some, please do check it out! But I'd still prefer a simple GUI personally. 10 10 11 - ![Preview of Restray on MacOS](.static/preview-macos.png) 11 + So here's Restray which should hopefully solve that :) 12 12 13 - ![Preview of Restray on Linux](.static/preview-linux.png) 13 + This is new and somewhat work-in-progress/beta software. You might possibly encounter a bug or two that I haven't fixed yet, and if so, please make an issue. I don't really intend on adding many new features, but I will fix bugs and refine the codebase more over time. 14 14 15 - ![Preview of Restray on Windows](.static/preview-windows.png) 15 + | MacOS | Linux | Windows | 16 + | --------------------------------------------------------- | --------------------------------------------------------- | ------------------------------------------------------------- | 17 + | ![Preview of Restray on MacOS](.static/preview-macos.png) | ![Preview of Restray on Linux](.static/preview-linux.png) | ![Preview of Restray on Windows](.static/preview-windows.png) | 16 18 17 19 ## Features 18 20 ··· 21 23 - Can detect battery power too and temporarily disable schedule 22 24 - Multiple backup profiles with different schedules and different settings 23 25 - Optional automatic pruning and checks after backups 24 - - Optional automatic retry and unlock for stale locks 25 - - Optional automatic `restic` binary download and updates 26 + - Optional automatic retry and removal of stale locks 27 + - Optional `restic` binary download and updates 26 28 - First tries to find `restic` in user's PATH, but if not found, user can manually click "download"/"update" restic and it'll manage it for them 27 29 - This can also be automated daily by enabling "manage_restic" in config 28 30 - Open a shell with your profile's environment and restic binary loaded, for restoring or other CLI operations without friction 29 - - Mount/browse repository snapshots on macOS/Linux 31 + - Mount repository snapshots on macOS/Linux 30 32 - Requires [FUSE-T](https://www.fuse-t.org) or [macFUSE](https://macfuse.github.io) on macOS. Requires [FUSE](https://github.com/libfuse/libfuse) on Linux 31 33 - I'd recommend something like [restic-browser](https://github.com/emuell/restic-browser) to browse on Windows, or just open the Shell and use the CLI 32 34 - Full Disk Access detection and prompt on macOS 33 35 - Config file hot-reloading 34 36 35 - ## Why 36 - 37 - I needed a replacement for Time Machine, since it's painfully slow, only exclusive to Macs, and only supports SMB now. I quite it's simplicity and ease-of-use though. Looking for other solutions, restic appeared to be a great fit, and I already use it for my server. 38 - 39 - However, I didn't find any option for scheduling restic backups that I actually liked. I did see [resticprofile](https://github.com/creativeprojects/resticprofile) which looks cool, and may be a better solution for some, check it out! But I'd still prefer a simple GUI and easier way to get started personally. 37 + ## Building 40 38 41 - So here's Restray which should hopefully solve that :) 39 + I'm not distributing Restray yet, but if you're on [Nix/NixOS](https://nixos.org)/nix-darwin, just run `nix build` and see `result`, or add this repo to your flake and install the package :) 42 40 43 - ## Building 41 + If you don't have Nix, install the dependencies from `flake.nix`'s devshell and use `just build` or `just package` to build/package for your current platform. You can also cross-compile to other platforms, for example `just build linux amd64` or `just package windows`. 44 42 45 - I'm not distributing Restray yet, but if you have [Nix](https://nixos.org)/NixOS/nix-darwin, just run `nix build` or add this repo to your flake and install the package. 46 - 47 - If you don't have Nix, install the dependencies from `flake.nix`'s devshell and use `just build` or `just package` to build/package for your current platform. You can also cross-compile to other platforms, for example `just build linux amd64`. 43 + Disclaimer: I've only tested the Linux build on Fedora Workstation so far.. not sure if it works on NixOS or other distributions yet. If someone can let me know that'd be great. 48 44 49 45 ## Configuration 50 46 ··· 103 99 | ------ | -------- | ------- | ------------------------------------------------------------------- | 104 100 | `args` | string[] | `[]` | Extra arguments passed to `restic mount` (e.g. `["--allow-other"]`) | 105 101 106 - ## Libraries used 102 + ## Credits 107 103 108 104 - [github.com/fyne.io/systray](https://github.com/fyne-io/systray) - cross-platform system tray handler 109 105 - [github.com/BurntSushi/toml](https://github.com/BurntSushi/toml) - parse TOML