Let you put anything in the system tray.
systranything
creates a system tray menu based on a YAML file. The YAML contains the specification of the menu items with shell commands to execute when the items are clicked.
Systranything
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.
Hacking
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.