···11-# restray
11+# Restray
2233-A simple Go application that runs in the background/system tray, that can schedule and manage [restic](https://restic.net) backups and profiles easily.
33+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.
4455Intended 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.
6677-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.
77+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.
8899-(Icon subject to maybe change in the future)
99+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.
10101111-
1111+So here's Restray which should hopefully solve that :)
12121313-
1313+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.
14141515-
1515+| MacOS | Linux | Windows |
1616+| --------------------------------------------------------- | --------------------------------------------------------- | ------------------------------------------------------------- |
1717+|  |  |  |
16181719## Features
1820···2123 - Can detect battery power too and temporarily disable schedule
2224- Multiple backup profiles with different schedules and different settings
2325- Optional automatic pruning and checks after backups
2424-- Optional automatic retry and unlock for stale locks
2525-- Optional automatic `restic` binary download and updates
2626+- Optional automatic retry and removal of stale locks
2727+- Optional `restic` binary download and updates
2628 - 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
2729 - This can also be automated daily by enabling "manage_restic" in config
2830- Open a shell with your profile's environment and restic binary loaded, for restoring or other CLI operations without friction
2929-- Mount/browse repository snapshots on macOS/Linux
3131+- Mount repository snapshots on macOS/Linux
3032 - 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
3133 - 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
3234- Full Disk Access detection and prompt on macOS
3335- Config file hot-reloading
34363535-## Why
3636-3737-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.
3838-3939-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.
3737+## Building
40384141-So here's Restray which should hopefully solve that :)
3939+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 :)
42404343-## Building
4141+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`.
44424545-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.
4646-4747-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`.
4343+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.
48444945## Configuration
5046···10399| ------ | -------- | ------- | ------------------------------------------------------------------- |
104100| `args` | string[] | `[]` | Extra arguments passed to `restic mount` (e.g. `["--allow-other"]`) |
105101106106-## Libraries used
102102+## Credits
107103108104- [github.com/fyne.io/systray](https://github.com/fyne-io/systray) - cross-platform system tray handler
109105- [github.com/BurntSushi/toml](https://github.com/BurntSushi/toml) - parse TOML