Skip to content


Repository files navigation


This is a widget-maker tool - it creates a widget based on a JSON definition returned by a script. For example, if your script returns following JSON:

  "widget": {
    "icon": "smile",
    "text": "noobie",
    "mouse_actions": {
      "on_right_click": "echo 'right click'"

noobie will convert it to the widget:


More complex example (from a people-in-space plugin) with a menu, each menu item has an icon, title and subtitle:


For more examples check out plugins repository: noobie-plugins


  • dropdown menu:


  • mouse actions (scroll up/down, right click);

  • icon could be either a local file, a feathericons icon or an image from URL;

  • a notification with details in case your script failed:

    error notification


Check out existing plugins in this repo:

Creating a plugin

Please consult a noobie.schema.json for details. Below are few important excerpts:

  • icon of the widget or menu item can be one of
    • a name of feathericons icon, you can get it here:;
    • an absolute path to the image file;
    • URL to the image file. If you are not sure image exists, you can add a icon_fallback field with an absolute path to the fallback image;
  • for a horizontal line in the menu add an item with title equals to '-', like
    { "title":  "-" }
  • for a header menu item set header field to true, note that the icon field will be ignored:
      "header": "true",
      "title": "Header Title"


  1. Clone the repo under ~/.config/awesome/ folder

  2. At the top of rc.lua add an import:

    local noobie_exmaple_1 = require("noobie")
    local noobie_exmaple_2 = require("noobie")
  3. Add a widget to wibox and provide a path to your script:

    noobie_exmaple_1{ path = os.getenv("HOME") .. '/.config/awesome/noobie/' },
    noobie_exmaple_2{ path = os.getenv("HOME") .. '/.config/awesome/noobie/' },

If your widget is static you can define it in a JSON file and use like this:

noobie_exmaple_1{ path = 'cat ' .. os.getenv("HOME") .. '/.config/awesome/noobie/test.json' },


In case of any problem / issue / question: