systranything
lets you put anything in your system tray. It is supported by
all destop environment that implements the StatusNotifierHost
specification from freedesktop.org
(KDE, XFCE, ...).
It uses a YAML file which describes the icon to put in the system tray along a context menu and callbacks to be executed in a shell.
The menu can contain labels, separators, submenus, checkboxes and radiobuttons. Scroll events can be triggered on the main icon.
Among other things, I use it to change my VPN settings. The icon shows its current status:
What you can do with it:
- a custom launcher menu
- a volume icon
- a menu to turn on or off your VPN
- a menu to toggle dual monitor setups
- anything that requires a status icon and scriptable actions
See the example file to get started.
Run it with:
$ systranything -f ./example.yaml
It has a verbose mode which can be turned on with -v
. It writes on stdout
the commands executed along their outputs.
The project can be built with nix.
Install with:
$ nix profile install
Build with:
$ nix build
The binary is then created in ./result/bin/systranything
Hack with:
$ nix develop
You will be dropped in a shell with all the needed tools in scope: cabal
to
build the project and haskell-language-server
for a better developer
experience.