monky: A system state collecting library and application

[ lgpl, library, program, system ] [ Propose Tags ]

monky started as an alternative to conky, i3-status or similar, that's fully containing in one process. Also making an effort to keep file descriptors or handles as long as possible. monky 2.0 is the first version on hackage.

monky consists of multiple parts. A number of collection modules, output modules, "examples" and a helper application.

  • collection modules

The collection modules are the core library. Collection modules export a handle that can be used to get some detail about the system. They can be used without the other parts of this package, but they are designed with monky in mind.

  • output modules

Output modules take a monky specific output type and transform it into something that can be displayed by some external application. That may be a statusbar (dzen2), the terminal, a network port, that makes it accessible on another machine, or any other thing.

  • examples

The examples are a group of modules, that use collection modules to create the output used by the output modules. The flexibility of the examples varies greatly, some may are really flexible, some are rather static. The intended usecase is for users to create their own examples and use them, if they don't want to use the provided ones.

Later on, I want to create something like xmonad-contrib or a collection of user examples, to provide better usability for users with few to no experience with haskell.

  • helper application

The helper application is used to compile the actual output generator and can generate an example configuration.

To generate an example configuration in ~/.monky simply run monky. Then modify ~/.monky/monky.hs to create your own configuration.

Modules can have two types. PollModule and EvtModule. PollModules work by the main loop asking the module to generate new output, while EvtModules block until some event is received and update their output on demand. Some handles are an instance of both, PollModule and EvtModule. EvtModule should be preferred, since they induce less load on your system. The monky main-loop does one "tick" every second. PollModules are updated each N ticks, where N is passed to pollPack.


[Last Documentation]

  • Monky
    • Monky.Alsa
    • Monky.Battery
    • Monky.Blkid
    • Monky.CPU
    • Monky.Connectivity
    • Monky.Disk
      • Monky.Disk.Btrfs
      • Monky.Disk.Common
      • Monky.Disk.Device
    • Examples
      • Monky.Examples.Alsa
      • Monky.Examples.Battery
      • Monky.Examples.CPU
      • Monky.Examples.Combine
      • Monky.Examples.Connectivity
      • Monky.Examples.Disk
      • Monky.Examples.File
      • Monky.Examples.IBus
      • Monky.Examples.Images
      • Monky.Examples.MPD
      • Monky.Examples.Memory
      • Monky.Examples.Modify
      • Monky.Examples.Network
      • Monky.Examples.Plain
      • Monky.Examples.Prepend
      • Sound
        • Monky.Examples.Sound.Alsa
        • Monky.Examples.Sound.Pulse
      • Monky.Examples.Time
      • Monky.Examples.Tminus
      • Monky.Examples.Utility
      • Monky.Examples.Wifi
        • Monky.Examples.Wifi.Event
        • Monky.Examples.Wifi.Poll
    • Monky.IP
      • Monky.IP.Raw
    • Monky.MPD
    • Monky.Memory
    • Monky.Modules
    • Monky.Network
      • Monky.Network.Dynamic
      • Monky.Network.Static
    • Outputs
      • Monky.Outputs.Ascii
      • Monky.Outputs.Dzen2
      • Monky.Outputs.Fallback
      • Monky.Outputs.Guess
      • Monky.Outputs.I3
      • Monky.Outputs.Modify
      • Monky.Outputs.Serialize
      • Monky.Outputs.Show
      • Monky.Outputs.Unicode
      • Monky.Outputs.Utf8
    • Monky.Time
    • Monky.Utility
    • Monky.Version
    • Monky.Wifi


Automatic Flags

enable ibus example


enable pulse example (7.6 disabled because travis)


Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info


Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees


Versions [RSS],,,,,,
Dependencies base (>= && <5), bytestring, cereal, composition, containers, dbus, directory, double-conversion (==, env-locale (>=, formatting, ibus-hs, monky, mtl, netlink (>=1.1), network, old-locale, old-time, optparse-applicative, process, pulseaudio (>= && <, scientific, statvfs, stm, template-haskell, text, time, transformers, transformers-compat, unix [details]
License LGPL-3.0-only
Author Moepi, Ongy
Maintainer Markus Ongyerth <>
Category System
Source repo head: git clone
Uploaded by ongyerth at 2020-02-13T17:28:40Z
Executables monky
Downloads 4398 total (19 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 2020-02-13 [all 2 reports]