Skip to main content

borgmatic systray icon

Project description

Traycortex

traycortex is an application that will show the status of borgmatic backup in your system tray. It will also let you trigger backups from the menu.

Features:

  • System tray menu for running borgmatic (all or single config)
  • Client application to integrate with borgmatic for detecting timed backup runs
  • Notifications (backup started, backup finished)
  • Configuration file to allow customizing the borgmatic command
  • ssh-agent detection to enable easy use of password protected ssh keys

Along with it comes a traycortex-cli application, that is used in the borgmatic hooks configuration to signal the tray icon. Possible states are job_started, job_finished and job_error.

screenshot of tray running

When the status of a backup is updated, a notification will be displayed and the icon changes accordingly.

Installation

Prerequisites

Some packages are required to build and install traycortex (probably incomplete):

  • Ubuntu: apt install libcairo2-dev python-gi-dev libgirepository1.0-dev
  • Arch: pacman -S gobject-introspection python-cairo libappindicator-gtk3

Recommended way to install:

pipx install traycortex

Also works:

pip install traycortex

Packagers welcome

Configuration File

Location: $XDG_CONFIG_HOME/traycortex.ini

If not found, an initial basic configuration file with a random authkey will be created on first run of traycortex.

The same configuration file is used for both, traycortex and traycortex-cli.

Configuration File Options

The authentication key and port for the connection between traycortex and traycortex-cli:

[connection]
; no default value. Randomly set on "traycortex-cli --ini".
authkey = ce03f7af891ebc29defc0643faf71025
; default:
;   port = 35234
port = 54321

The command used to create a backup (when selecting the "Engage" menu item):

[borgmatic]
; default:
;   command = borgmatic
; For testing non-interactive ssh you can set this:
;   command = ssh -oBatchMode=yes <backupserver> date
command = systemd-inhibit --why="Backup is running" /usr/local/bin/borgmatic

You may add the string @CONFIG@ to the command option. For instance you could set:

[borgmatic]
command = /bin/borgmatic @CONFIG@ create

@CONFIG@ will be replaced by -c <yamlfile> in case you selected a specific yaml file to be run. Otherwise it will be replaced with the empty string. The command that will be execeuted in this example will be /bin/borgmatic create if you just clicked on Engage, or /bin/borgmatic -c /some/config.yml create if you clicked on Engage /some/config.yml.

If you engage an individual yaml file without having @CONFIG@ in your config, the resulting action will be equivalent to that of just having clicked Engage.

Running

To start the tray application from the command line:

traycortex &

Or create a desktop file ~/.local/share/applications/traycortex.desktop:

[Desktop Entry]
Exec=traycortex
; For the icon to work you need to place borgmatic.png in `~/.icons`
Icon=borgmatic
Name=traycortex
Type=Application

Now you can start traycortex with your usual desktop method.

Tray Menu

  • Engage All: Run a borgmatic backup
  • Engage : Run a borgmatic backup for this specific configuration
  • Discard: Quit traycortex and remove the icon from the tray. If a backup is currently running, it will be killed.

Integrating with borgmatic

If you want to receive notifications for borgmatic jobs that are not directly triggered from traycortex, you have to configure the corresponding hooks in your borgmatic configuration.

Example ~/.config/borgmatic.d/home.yaml:

[...]
source_directories:
    - /home/seb
repositories:
    - path: ssh://...
before_backup:
    - traycortex-cli -m job_started -a "{configuration_filename}"
after_check:
    - traycortex-cli -m job_finished -a "{configuration_filename}"
on_error:
    - traycortex-cli -m job_error -a "{configuration_filename}"
[...]

ssh-agent detection

With borgmatic it is likely you use ssh to access a remote backup repository. You probably have public key authentication set up for this to allow non-interactive use. And probably you also want to have a passphrase set for the private ssh key.

traycortex will try to detect a running ssh-agent and set the environment for borgmatic to have the SSH_AUTH_SOCK environment variable set. This makes it independent from its starting environment with regard to that variable.

You will still have to add your key to the running ssh-agent.

It is recommended to use

ssh_command: ssh -oBatchMode=yes

in your borgmatic configuration. This way, if ssh-agent detection fails, or you have not added the necessary key to it, borgmatic will properly fail and not wait for input in the background.

If you have multiple ssh-agents running, traycortex currently has no way to know which one is correct and will simply use the first one found.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

traycortex-0.5.1-py3-none-any.whl (49.5 kB view details)

Uploaded Python 3

File details

Details for the file traycortex-0.5.1-py3-none-any.whl.

File metadata

  • Download URL: traycortex-0.5.1-py3-none-any.whl
  • Upload date:
  • Size: 49.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.12.4 Linux/6.6.44-1-MANJARO

File hashes

Hashes for traycortex-0.5.1-py3-none-any.whl
Algorithm Hash digest
SHA256 199687449eae315ed73651e992e8eb2650e37d3ae208810bc5209a7fe4c28a58
MD5 f21db45d530144f12a883927512a3f4b
BLAKE2b-256 88fac62ee37a7352786ae4abd103f5f8ff7a989a2ec615e8033320b05adcb5a4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page