jecaro / systranything

Create a system tray menu from a YAML file with shell commands

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Systranything

CI

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:

demo

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.

About

Create a system tray menu from a YAML file with shell commands

License:MIT License


Languages

Language:Haskell 88.1%Language:Nix 11.9%