Lemonade

Lemonbar configuration framework

Usage

See the samples, they're ordered as a tutorial (not commented yet).

If you have crystal installed in your environment, you can run each sample directly, e.g:

$ ./samples/01_hello_world.cr

This will first compile the sample program, then run it.

TODO next

Now:

After:

Later (optimization):

Simple samples:

Note: Lemonbar refresh rates:

Refreshs are instant with lemonbar :100: : 100_000 simple (like hello world) refreshs in 5.3 seconds (~19_000 Refresh per second (don't know about the actual FPS))

Ideas about the framework

A lemonade config can have 1 or more lemon (a lemonbar instance).

The lemonade binary

The lemonade binary is the lemonade compiler (uses crystal compiler under-the-hood), with helpers to create a config dir, compile a lemonade, and run it, e.g:

$ mkdir ~/.lemonade && cd ~/.lemonade
$ lemonade init
$ lemonade run <source.cr> [args...]
or without `run`:
$ lemonade <source.cr> [args...]
$ lemonade build <source.cr> -o my_lemonade
$ ./my_lemonade [args...]

Notes about possibilities

(note: a lemon is a lemonbar instance, and a lemonade is a group of lemons :smiley:)

A lemonade config can dynamically create lemons, position them, and change them based on events coming from other lemons (in the same lemonade).

Example lemonade:

+-------------------------------------------------------+
|        +----+ +--+      +------+ +----------+         |
|        | L1 | |L2|      |  L3  | |    L4    |         |
|        +----+ +--+      +------+ +----------+         |
|                                                       |
|                                                       |
|                                                       |
|                                                       |
|               +----------------------+                |
|               |    L5 id:bottom      |                |
|               +----------------------+                |
+-------------------------------------------------------+

L1-5 are lemons. Each lemon can be given a unique ID (e.g: L5 has ID bottom).

Events and actions can be configured accross multiple lemons of the same lemonade, e.g: A click on a specific block of L1 can trigger an event on a specific block of L5, and change what is displayed.

Contributing

  1. Fork it ( https://github.com/bew/lemonade/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

Contributors