tkclient man page on Inferno

Man page or keyword search:  
man Server   579 pages
apropos Keyword Search (all sections)
Output format
Inferno logo
[printable version]

TKCLIENT(2)							   TKCLIENT(2)

NAME
       tkclient:  makedrawcontext, toplevel, onscreen, startinput, wmctl, set‐
       title, handler, snarfput, snarfget - window manager  interface  for  Tk
       applications.

SYNOPSIS
       include "tkclient.m";
       tkclient := load Tkclient Tkclient->PATH;

       Resize,
       Hide,
       Help,
       OK,
       Plain:	  con 1 << iota;

       Appl:   con Resize | Hide;

       init:	   fn();
       makedrawcontext: fn():  ref Draw->Context;
       toplevel:   fn(ctxt: ref Draw->Context, topconfig: string,
		       title: string, buts: int): (ref Tk->Toplevel, chan of string);
       onscreen:   fn(top: ref Tk->Toplevel, how: string);
       startinput: fn(top: ref Tk->Toplevel, devs: list of string);
       wmctl:	   fn(top: ref Tk->Toplevel, request: string): string;
       settitle:   fn(top: ref Tk->Toplevel, name: string): string;
       handler:	   fn(top: ref Tk->Toplevel, stop: chan of int);

       snarfput:   fn(buf: string);
       snarfget:   fn(): string;

DESCRIPTION
       The  Tkclient module provides routines for making windows controlled by
       wm(1) containing tk(2) widgets.

       Init should  be	called	once  to  initialise  the  internal  state  of
       tkclient.

       Makedrawcontext	establishes an initial connection with the window man‐
       ager, creating a new Draw context suitable for creating new windows. It
       is  only necessary to call this if the application has not already been
       provided with a context.

       Toplevel creates a new window through ctxt.  Topconfig gives a list  of
       frame(9) options that are applied to the new tk window, as described in
       tk(2).  Title gives a label that will be displayed in the title bar  of
       the  window; buts determines which buttons are created in the titlebar,
       a bitwise combination of the constants Resize, Help, OK, and Hide.   If
       Plain  is  given,  the  window is given no decoration at all.  Toplevel
       returns a tuple, say (top, ctl), where top is  the  newly  created  top
       level  tk  window,  and	ctl  is a channel down which requests from the
       title bar are sent.  Messages received on ctl should  be	 processed  by
       the application or passed to the wmctl function. Requests are formatted
       as with quoted in string(2).  The messages include:

       exit   The window should be closed.  Wmctl will kill all	 processes  in
	      the current process group.

       !move x y
	      The  user	 has  started to try to drag the window.  X and y give
	      the location of the initial pointer click.

       !size  The user wishes to resize the window.

       help   The help button has been clicked.

       ok     The OK  button has been clicked.

       hide   The Hide button has been clicked.	 The window will  be  deleted,
	      and an entry shown on the toolbar.

       In  order to function correctly, an application should process not only
       events from the title bar channel, but also events from the Tk toplevel
       wreq  channel,  those  received	from  the  window  manager itself (via
       top.ctxt.ctl), and pointer and keyboard events received from the window
       manager	(via  top.ctxt.ptr  and	 top.ctxt.kbd  respectively).  Control
       events can be passed to wmctl; pointer and keyboard  events  should  be
       passed to their respective functions in tk(2).

       When created, the window is not visible and will not receive pointer or
       keyboard events.	 Onscreen makes it visible,  and  possibly  chooses  a
       position	 and  a	 size for it.  How specifies what sort of placement is
       required for the window; it can be one of

       place  tries to choose a suitable place on the screen with  respect  to
	      other  windows;  it may size the window as it feels appropriate.
	      This the default (if how is nil).

       onscreen
	      tries to keep the position and size the same as specified on the
	      window, adjusting them only to bring the window fully on screen,
	      and making sure that the window is no  bigger  than  the	entire
	      display.

       exact  does  not	 change	 the  specified size or position of the window
	      unless absolutely necessary.

       Startinput informs the window manager that the window is ready  to  the
       event  types  specified in devs.	 Currently understood are kbd for key‐
       board events, and ptr for pointer events.

       The simplest well-behaved wm (1) client will therefore contain:

	    (top, ctl) := tkclient->toplevel(ctxt, nil, "My Program", Tkclient->Appl);
	    # ... populate the window with tk widgets
	    tkclient->startinput(top, "ptr" :: "kbd" :: nil);
	    tkclient->onscreen(top, nil);
	    for(;;){
		 alt{
		 s := <-ctl or
		 s = <-top.ctxt.ctl or
		 s = <-top.wreq =>
		      tkclient->wmctl(top, s);
		 p := <-top.ctxt.ptr =>
		      tk->pointer(top, *p);
		 c := <-top.ctxt.kbd =>
		      tk->keyboard(top, c);
		 }
	    }

       Settitle changes the name displayed in the title bar and	 the  window's
       name when it is in the task bar.

       Snarfget	 and  snarfput retrieve and replace the contents of the window
       manager's snarf buffer.

FILES
       /chan/snarf
	      snarf buffer maintained by wm(1)

       /chan/wm
	      channel for interaction with wm(1)

SOURCE
       /appl/lib/tkclient.b

SEE ALSO
       wm(1), tk(2)

								   TKCLIENT(2)
[top]

List of man pages available for Inferno

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net