Table of Contents

Human Interface Guidelines for Panel Plugins

This page is very much a work-in-progress at the moment. Feel free to contribute. Discussion page.

About

Rationale

UI consistency is an important aspect of a mature desktop like Xfce. On the other hand, there are tons of panel plugins out there, developed by many different people. A written set of UI guidelines will help those developers ensure their plugins maintain some basic level of consistency.

Process

We're trying to do this in a wiki fashion, so everyone is welcome to improve this. When you add something new, put “[draft]” before it. This way, plugin developers know to keep an eye on it, and people can provide their comments. If you aren't sure how something should be handled but think it should be discussed, put “[rfc]” (request for comments) before it.

Plugin Classes

Most guidelines apply differently based on the plugin class. (“Class” here means bin or category - it is not used in the GObject sense). The document is split into sections for each of these classes. The guidelines that apply generally are listed in the “General” section.

General

Tooltips

Possibly 4 spaces:

No spaces:

2 spaces:

Context Menu

Interface guidelines regarding the right-click menu provided by the panel.

Interface guidelines regarding plugins' menus, usually opened by left-clicking on a button or running a command.

Settings Dialog

Interface guidelines regarding preferences/properties/setting dialogs.

Class B: Button

Button with [image label], [image] or [label]

sometimes opening a menu

examples: menu, places, launcher, window list, mount, …

Class I: Input

Button with [image] [input field]

database queries, command execution, etc from the panel

examples: verve, dict(ionary)

Class M: Monitor

[image] [label] [meter] [value reading]

the resource monitoring ones. Many plugins display a monitor and give the user the option of showing a label, a value reading, or both. For example, the systemload plugin can show labels and monitors for CPU, memory, and swap usage.

examples: system load monitor, battery monitor, sensors plugin

Class G: Grid

array of buttons with [image] or [label] or [image label]

examples: icon box, task list, system tray

Class O: Other

examples: pager, xfapplet