Personal tools



From NiftyWiki
Jump to: navigation, search
Home Documentation Download Support Showroom Links

Niftyconf is the GUI editor for niftyled setup files. It uses gtk+.


Main window

Context menu

The Menu and the Toolbar provide access to various core functionality.

The Element view contains a tree of elements (hardware, chains and tiles) in a setup and a Property view to edit the properties of the currently selected element(s).

On right-click, the element view provides a context menu for the currently selected element. When a chain element is selected, the LED view provides a list of LEDs in that chain. Use (shift) click to select a range of elements or LEDs.

Setup preview

Setup preview

The Setup preview visualizes the current setup. All coordinates are relative to the origin. Coordinates to the left/top of the origin have negative coordinates. Final setups should not contain negative coordinates since a pixmap only has pixels at positive coordinates. Pixels with negative coordinates are not mapped.

Tiles are rendered by drawing their outlines and a triangular arrow pointing to the top of the tile. All LEDs are rendered using the color of the component they represent at the pixel position where they are mapped to.

You can pan the view by dragging it with the mouse and zoom in/out using the mousewheel, the menu, the toolbar or by pressing <ctrl> and +/-

Live preview

If "View -> Live hardware preview" is active, data is sent to the connected (and initialized) hardware in realtime:

  • selected tiles are set to full white
  • selected chains are set to full white
  • selected LEDs are set to full brightness

By checking whether the position of selected Tiles correspond to the LEDs that are lit, you can confirm that you created the setup configuration correctly.


When any element in the tree is selected, it can be edited, cut, copied or pasted by using the context menu (right click), the menu or the toolbar. The properties of the currently selected elements are shown below the tree and can be edited. If multiple elements are selected, the properties of the last selection are shown. (When incompatible elements are selected, changes are applied only to the last selected element)


Represents a <setup> node. A setup can be loaded or saved using the menu, the toolbar or keyboard shortcuts (<ctrl>+l or <ctrl>+s). Niftyconf will remember the current setup file upon exit and will try to load the last used setup file upon launch.


"New hardware" dialog

Represent a <hardware> node which itself stands for one piece of hardware that controls a chain of LEDs. Hardware nodes are the root elements of any setup. Start a new setup by adding all hardware elements you'll use and configuring them in the properties view. When adding a new hardware element (e.g. by using the context menu), the "New hardware" dialog opens where you can set the initial properties of the hardware. A single chain element will be added upon hardware creation. This is the "destination" chain. It must be of the same colorspace as the LED pixels are. (e.g. Y u16 for 16 bit monochrome LEDs). You can later change every property except the plugin family in the hardware property view.

Hardware properties

Every hardware can have any amount of tile elements. (If you want to map pixels from a pixmap to the hardware's LED chain, you need at least one tile holding a chain.)

  • Name - an arbitrary identifier for this element
  • Plugin - the plugin family this element belongs to
  • Init/Deinit button - used to initialize or deinitialize this hardware element
  • ID - Uniqe identifier for this element (e.g. a device node: "/dev/ttyS0" or a usb vid:pid: "1d6b:0001" or a PCI id: "06:02.0"). The plugin uses this identifier to access this specific hardware. When set to "*", the plugin should attempt to autodetect this hardware. (See the tooltip for a plugin specific description.)
  • Stride - this property is described in detail in the XML format documentation
  • Property - used to select between the plugins dynamic properties. (Any plugin can register properties. If the plugin doesn't offer any properties, this selector is disabled)
  • Value - the value of this dynamic plugin property

Please be sure to install plugins first, otherwise you will see no entries in the "Plugin family" pulldown menu


A <tile> node is used to hold a <chain> node mapped to the input pixmap or to group other <tile> nodes. A tile can be added to a <hardware> or to another <tile> node.

Tile properties
  • X/Y - Position of unrotated Tile relative to the origin or the parent Tile or 0,0
  • Width/Height - Dimensions of this tile (automatically calculated)
  • Rotation - Rotation around Pivot in degrees
  • Pivot - Position of anchor point used for rotation relative to Tile origin


Chain properties

A <chain> represents a portion of sequentially arranged LEDs. It can either belong to a hardware, representing all LEDs controlled by this hardware, or it belongs to a tile and is mapped from the input pixmap. During mapping, the chains of all tiles in a hardware node are connected in reverse order before they are mapped to the hardware chain. So, all chains in tiles of a hardware must contain the same amount of LEDs as the chain of the hardware.

  • Ledcount - Amount of LED elements in this chain
  • Format - The colorspace and component format that is defined for the LEDs in this chain (s. "Pixel formats" on ).


LED properties

A <led> node represents a single color LED. You can add or remove LEDs by adjusting the ledcount of the parent <chain>.

  • Component - The color component of this LED. (e.g. 0=Red, 1=Green, 2=Blue with RGB)
  • X/Y - The position of this LED inside the input pixmap (This is manually set in a chain of a tile and automatically in a chain of a hardware)
  • Gain - Hardware gain, normally controls LED current. Effect depends on the hardware plugin used but always means (0 = lowest gain, 65535 = maximum gain (overdrive)). Every plugin should check for overdriven gain values, disallow them by default and require special user interaction to enable it.


message log

libniftyled offers a logging mechanism which can be used by plugins and application aswell as the library itself. In niftyconf you have a seperate window to show all messages. It's not shown by default. To show it activate "View -> Show log window" in the menu.

  • Loglevel allows to select the verbosity of the output (ranging from error - which shows errors only to verynoisy showing all sorts of internal messages.)
  • Show
    • source file adds the filename of the source file to each message when active
    • source line adds the line in the source code to each message when active
    • function adds the name of the function to each message when active