systranything: Let you put anything in the system tray

[ desktop, mit, program ] [ Propose Tags ] [ Report a vulnerability ]

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.


[Skip to Readme]

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

Versions [RSS] 0.1.0.0, 0.1.1.0
Change log CHANGELOG.md
Dependencies aeson (>=2.1.2 && <2.2), base (>=4.16 && <5), bytestring (>=0.11.4 && <0.12), extra (>=1.7.14 && <1.8), gi-ayatana-appindicator3 (>=0.1.0 && <0.2), gi-gdk (>=3.0.28 && <3.1), gi-glib (>=2.0.29 && <2.1), gi-gobject (>=2.0.30 && <2.1), gi-gtk (>=3.0.39 && <3.1), optparse-applicative (>=0.17.1 && <0.19), text (>=2.0.2 && <2.1), typed-process (>=0.2.11 && <0.3), unliftio (>=0.2.25 && <0.3), yaml (>=0.11.11 && <0.12) [details]
Tested with ghc ==9.2.8, ghc ==9.4.5, ghc ==9.6.2
License MIT
Author Jean-Charles Quillet
Maintainer jeancharles.quillet@gmail.com
Category Desktop
Home page https://github.com/jecaro/systranything
Source repo head: git clone https://github.com/jecaro/systranything.git
Uploaded by jecaro at 2024-11-06T13:59:46Z
Distributions
Executables systranything
Downloads 49 total (23 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs not available [build log]
All reported builds failed as of 2024-11-06 [all 1 reports]

Readme for systranything-0.1.1.0

[back to package description]

Systranything

nix haskell-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.