xslurm is intended as a GUI for users to interact with SLURM. 
xslurm should provide the following capabilities:
1. system monitoring (sinfo and squeue capabilities)
2. job submission (srun capabilities)
3. job cancelation (scancel capabilities)
4. possibly some other job modification capabilities

The design calls for the main window to have three primary components:
1. partition information
2. job information
3. buttons for help, quit, etc. 

--------------------------------------------
| Partition Info                           |    < scrollable window
--------------------------------------------
| Job Info                                 |    < scrollable window
--------------------------------------------
| Help  | Submit | Refresh | Filter | Quit |    < buttons
--------------------------------------------

The "Submit" button will bring up a GUI to be used for specification 
of a job's resource requirements. "Refresh" will update all partition 
and node information in all windows. "Filter" will permit a user to 
specify that only jobs satisfying certain criterion will be displayed 
(e.g., belonging to a certain user, in a certain state, etc.).
We might also want to provide a strip-chart through time showing 
node state for the system as a whole (e.g., X nodes are idle, Y nodes 
are busy, etc.)

The partition component of the main window will show high-level 
partition information, perhaps just name, state, and node count
in a scrollable window. There will be a button above each of those 
fields with a descriptive name (e.g., "name"). When that button is 
clicked, the partition information display will be sorted on that 
field. Each partition will contain its specification on a button 
under that (one button per partition). Clicking the button of a 
partition will pop-up a new window containing detailed information 
about that partition: all fields plus a strip-chart of node's state 
through time. State information will be updated when the "Refresh" 
button is clicked, including the strip-charts. Alternately the information 
can be updated on a periodic basis.

-------------------------
| Partitions:           |
-------------------------
| Name  | State | Nodes |   < buttons for sorting
-------------------------
|batch    up      128   |   < button for partition selection
-------------------------
|debug    up       32   |   < button for partition selection
-------------------------

Job information will be similar to the partition information 
described above. The main window will include just the job id, 
state, and user name. The sort field can be selected by button. 
The job buttons can be color coded by state. Clicking on a job 
button will display full information about a specific job in a 
pop-up window. This job pop-up window should also have a "Job 
Cancel" button. 

-------------------------
| Jobs:                 |
-------------------------
| JobId | State  | User |   < buttons for sorting
-------------------------
|1234     Running  Bob  |   < button for job selection
-------------------------
|1236     Pending  Hope |   < button for job selection
-------------------------

The file xslurm.c was originally designed as an exploration of 
the use of GTK+ in solving the above problems. It is incomplete, 
contains errors, and is really just code to demonstrat prove of 
priniciple. GTK+ appears difficult to use for this purpose. 
Updating contents of buttons appears difficult (e.g., as job 
states change) and making the strip charts is difficult (see 
gstripchart in sourceforge if you want to pursue this further). 
It appears that the xgang tool written in C and Tck/Tk contains 
all of the desired functionality. It needs to be ported from a 
LoadLeveler infrastructure to a SLURM infrastructure, which should 
prove straightforward. Contact Moe Jette <jette1@llnl.gov> for 
access to the xgang code.
