Refactoring
[pipeglade.git] / pipeglade.1
blob8593d348b91c74c2b470e23b416cc19d6034903c
1 .\" Copyright (c) 2014-2016 Bert Burgemeister <trebbu@googlemail.com>
2 .\"
3 .\" Permission is hereby granted, free of charge, to any person obtaining
4 .\" a copy of this software and associated documentation files (the
5 .\" "Software"), to deal in the Software without restriction, including
6 .\" without limitation the rights to use, copy, modify, merge, publish,
7 .\" distribute, sublicense, and/or sell copies of the Software, and to
8 .\" permit persons to whom the Software is furnished to do so, subject to
9 .\" the following conditions:
10 .\"
11 .\" The above copyright notice and this permission notice shall be
12 .\" included in all copies or substantial portions of the Software.
13 .\"
14 .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15 .\" EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16 .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17 .\" NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18 .\" LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19 .\" OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20 .\" WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21 .\"
22 .Dd May 07, 2016
23 .Dt PIPEGLADE 1 PRM
24 .Os BSD
25 .Sh NAME
26 .Nm pipeglade
27 .Nd pipe-driven GTK+ interface
28 .Sh SYNOPSIS
29 .Nm
30 .Oo
31 .Op Fl i Ar in-fifo
32 .Op Fl o Ar out-fifo
33 .Op Fl b
34 .Op Fl u Ar builder-file
35 .Op Fl e Ar parent-xid
36 .Op Fl l Ar log-file
37 .Op Fl O Ar err-file
38 .Op Fl -display Ar X-server
39 .Oc |
40 .Op Fl h | G | V
41 .Sh DESCRIPTION
42 .Nm
43 is a helper program that displays graphical user
44 interfaces for other programs.
45 It renders the GUI definition found in a GtkBuilder XML file
46 (typically created using the
47 .Xr glade 1
48 interface designer), and communicates with the main program solely
49 through plain text messages via pipes or fifos.
50 It provides access to a subset of features of a subset of widgets of
51 GTK+ 3.
52 Simple one-shot dialogs as well as more complex, long-running programs
53 can be built using
54 .Nm ;
55 see
56 .Sx EXAMPLES .
57 .Sh OPTIONS
58 .Bl -tag -width Ds
59 .It Fl i Ar in-fifo
60 Creates a named pipe
61 .Ar in-fifo
62 if necessary, sets its permissions to
63 .Li 0600 ,
64 and uses it for command input.
65 .Pp
66 A command is a line of text.
67 Its format is
68 .Qq Ar id Ns Cm \&: Ns Ar action Bq Ar data ,
69 .Ar id
70 being the name of the receiving widget;
71 .Ar data
72 is separated from the rest of the command by a single whitespace
73 character.
74 Commands whose first non-whitespace character is
75 .Cm #
76 are considered comments and ignored silently, as are empty input lines.
77 Any occurences of the two-character sequences
78 .Cm \en
79 and
80 .Cm \er
81 will be converted into newline or carriage return, respectively.
82 Every other character following a backslash will be left unchanged,
83 but the backslash will be removed.
84 Invalid commands are reported on
85 .Va stderr
86 and are otherwise ignored.
87 See
88 .Sx WIDGETS
89 for applicable commands.
90 .Pp
91 It is an error if
92 .Ar in-fifo
93 exists but is not a named pipe.
94 The named pipe
95 .Ar in-fifo
96 is deleted upon successful program termination.
97 .Pp
98 Default command input is
99 .Va stdin .
100 .It Fl o Ar out-fifo
101 Creates a named pipe
102 .Ar out-fifo
103 if necessary, sets its permissions to
104 .Li 0600 ,
105 and uses it for output of feedback messages from the
106 graphical user interface.
108 A feedback message is a line of text; its format is
109 .Qq Ar id Ns Cm \&: Ns Ar info Bq Ar data ,
110 .Ar id
111 being the name of the sending widget.
113 .Sx WIDGETS
114 for possible feedback messages.
116 It is an error if
117 .Ar out-fifo
118 exists but is not a named pipe.
119 The named pipe
120 .Ar out-fifo
121 is deleted upon successful program termination.
123 Default feedback-message output is
124 .Va stdout .
125 .It Fl b
126 Runs
128 in the background after printing its process ID to
129 .Va stdout .
131 It is an error if option
132 .Fl b
133 is used and not both
134 .Fl i Ar in-fifo
136 .Fl o Ar out-fifo
137 are specified.
138 .It Fl u Ar builder-file
139 Displays the graphical user interface
140 .Ar builder-file
141 which should be created using the
142 .Xr glade 1
143 user interface designer and saved in GtkBuilder (.ui) format.
144 Widget ids should be alphanumeric, including underscores, and the
145 main window must must be given the id
146 .Cm main .
148 Default is
149 .Pa ./pipeglade.ui .
150 .It Fl e Ar parent-xid
151 Embeds the main window into the XEmbed socket
152 .Ar parent-xid
153 of another process.
154 .It Fl l Ar log-file
155 Appends for each command a line of
156 .Qq Ar time activity
158 .Ar log-file ,
159 .Ar time
160 being the number of microseconds elapsed during
161 .Ar activity .
162 .Ar time
164 .Ar activity
165 are separated by a tab character.
166 Permissions of
167 .Ar log-file
168 are set to
169 .Li 0600 .
171 .Ar log-file
172 name of
173 .Ql -
174 means
175 .Va stderr .
176 .It Fl O Ar err-file
177 Redirects
178 .Va stderr ,
179 appending its output to
180 .Ar err-file .
181 Permissions of
182 .Ar err-file
183 are set to
184 .Li 0600 .
185 .It Fl -display Ar X-server
186 Uses the display on
187 .Ar X-server
188 for user interaction.
189 .It Fl h
190 Prints a help message and exits.
191 .It Fl G
192 Prints the versions of the underlying GTK+ and cairo libraries and
193 exits.
194 .It Fl V
195 Prints the
197 version and exits.
199 .Sh WIDGETS
200 The widget classes able to communicate through
203 .Sx GtkButton ,
204 .Sx GtkCalendar ,
205 .Sx GtkCheckButton ,
206 .Sx GtkColorButton ,
207 .Sx GtkComboBoxText ,
208 .Sx GtkDialog ,
209 .Sx GtkDrawingArea ,
210 .Sx GtkEntry ,
211 .Sx GtkEventBox ,
212 .Sx GtkExpander ,
213 .Sx GtkFileChooserButton ,
214 .Sx GtkFileChooserDialog ,
215 .Sx GtkFontButton ,
216 .Sx GtkFrame ,
217 .Sx GtkImage ,
218 .Sx GtkLabel ,
219 .Sx GtkMenuItem, GtkImageMenuItem ,
220 .Sx GtkNotebook ,
221 .Sx GtkPrintUnixDialog ,
222 .Sx GtkProgressBar ,
223 .Sx GtkRadioButton ,
224 .Sx GtkScale ,
225 .Sx GtkScrolledWindow
226 .Sx GtkSocket ,
227 .Sx GtkSpinButton ,
228 .Sx GtkSpinner ,
229 .Sx GtkStatusbar ,
230 .Sx GtkSwitch ,
231 .Sx GtkTextView ,
232 .Sx GtkToggleButton ,
233 .Sx GtkTreeView ,
234 .Sx GtkTreeViewColumn ,
236 .Sx GtkWindow .
239 references a widget by the
240 .Ar id
241 attribute it is given in Glade.
242 In the
243 .Pa .ui
244 file, a
245 .Cm GtkWindow
246 named
247 .Li foo
248 would appear as
249 .Dl <object class="GtkWindow" id="foo"> .
250 .Ss Any Widget (including widgets not mentioned above)
251 .Bl -tag -width "commands "
252 .It Commands
253 .Qq Ar id Ns Cm :set_sensitive Brq Cm 0 | 1
254 makes the widget grayed out
255 .Pq Cm 0
256 or responsive
257 .Pq Cm 1 .
259 .Qq Ar id Ns Cm :set_visible Brq Cm 0 | 1
260 hides
261 .Pq Cm 0
262 the widget, or makes it visible
263 .Pq Cm 1 .
265 .Qq Ar id Ns Cm :grab_focus
266 puts the keyboard focus onto the widget, if possible.
268 .Qq Ar id Ns Cm :set_size_request Bq Ar width height
269 sets the widget's minimum size to
270 .Ar width
272 .Ar height .
273 Default is the widget's natural size.
276 .Ar id Ns Cm :style
277 .Bo Ar prop Ns Cm \&: Ns Ar val Ns Bo Cm \&; Ar prop Ns Cm \&: Ns Ar val ... Bc Bc
279 sets properties
280 .Ar prop
281 of the widget style to
282 .Ar val .
283 Properties not explicitly specified are reset to their default values.
284 Examples:
285 .Bl -dash -offset indent -compact
287 .Ql label1:style font:Bold 11; background-color:green
289 .Ql label1:style font-style:italic; font-weight:bold; color:blue
291 .Ql frame1:style border-color:red yellow; border-width:5px
293 .Ql frame1:style border-radius:10px; transition:10s
295 For a description of possible color notations see
296 .Sx GtkColorButton .
298 .Qq Ar id Ns Cm :set_tooltip_text Bq Ar text
299 sets the widget's tooltip
300 .Ar text .
301 Default is disabling the tooltip.
303 .Qq Ar id Ns Cm :block Brq Cm 0 | 1
304 blocks
305 .Pq Cm 1
306 or unblocks
307 .Pq Cm 0
308 feedback messages from widget.
309 Doesn't work for
310 .Sx GtkTreeView ;
311 address the underlying
312 .Cm GtkTreeSelection
313 instead.
314 Initially, all widgets are unblocked.
316 .Qq Ar id Ns Cm :force
317 simulates a click on widget
318 .Ar id ,
319 triggering a response as described with the widgets below.
320 Exceptions:
321 .Bl -dash -offset indent -compact
323 The command is ignored by
324 .Sx GtkComboBoxText
325 (address its child
326 .Sx GtkEntry
327 instead),
328 .Sx GtkEventBox ,
329 .Sx GtkTreeView ,
331 .Sx GtkTreeViewColumn ;
333 .Sx GtkCalendar , GtkEntry , GtkFileChooserButton , GtkScale ,
335 .Sx GtkSpinButton
336 report the currently selected item;
338 .Sx GtkColorButton
340 .Sx GtkFontButton
341 just open their respective dialogs.
344 .Qq Ar id Ns Cm :load Ar file
345 reads arbitrary
347 commands from
348 .Ar file .
349 A non-empty
350 .Ar id
351 is required but ignored.
352 .Cm :load
353 commands may be nested but on attempts to read from the same file, the
354 inner
355 .Cm :load
356 is ignored.
357 There is also a
358 .Cm :save
359 command; see
360 .Sx GtkTextView
362 .Sx GtkTreeView .
364 .Qq Ar id Ns Cm :snapshot Ar file Ns Brq Cm .ps Ns | Ns Cm .eps Ns | Ns Cm .epsf Ns | Ns Cm .pdf Ns | Ns Cm .svg
365 writes a snapshot of the widget to an image file of the specified
366 type.
368 .Qq Ar id Ns Cm :main_quit
369 kills the user interface.
370 A non-empty
371 .Ar id
372 is required but ignored.
374 .Ss GtkButton
375 .Bl -tag -width "commands "
376 .It Commands
377 .Qq Ar id Ns Cm :set_label Ar string
378 replaces the button text with
379 .Ar string .
380 .It Feedback
381 .Qq Ar id Ns Cm \&:clicked
383 .Cm GtkButton Ns
384 s with ids ending in
385 .Cm _ok , _apply , _cancel , _send_text ,
387 .Cm _send_selection
388 may work differently; see
389 .Sx GtkDialog , GtkFileChooserDialog ,
391 .Sx GtkTextView
392 for details.
394 .Ss GtkCalendar
395 .Bl -tag -width "commands "
396 .It Commands
397 .Qq Ar id Ns Cm :select_date Ar yyyy Ns Cm - Ns Ar mm Ns Cm - Ns Ar dd
398 selects the date on the calendar.
400 .Qq Ar id Ns Cm :mark_day Ar day
401 marks
402 .Ar day Pq 1-31
403 on the calendar.
405 .Qq Ar id Ns Cm :clear_marks
406 unmarks all days on the calendar.
407 .It Feedback
408 .Qq Ar id Ns Cm \&:clicked Ar yyyy Ns Cm - Ns Ar mm Ns Cm - Ns Ar dd
410 .Qq Ar id Ns Cm \&:doubleclicked Ar yyyy Ns Cm - Ns Ar mm Ns Cm - Ns Ar dd
412 .Ss GtkCheckButton
413 .Bl -tag -width "commands "
414 .It Commands
415 .Qq Ar id Ns Cm :set_active Brq Cm 0 | 1
416 switches the check mark off
417 .Pq Cm 0
418 or on
419 .Pq Cm 1 .
421 .Qq Ar id Ns Cm :set_label Ar string
422 replaces the button text with
423 .Ar string .
424 .It Feedback
425 .Qq Ar id Ns Cm \&:1
426 if switched on, or
427 .Qq Ar id Ns Cm \&:0
428 otherwise.
430 .Ss GtkColorButton
431 .Bl -tag -width "commands "
432 .It Commands
433 .Qq Ar id Ns Cm :set_color Ar color
434 preselects the color.
435 .Ar color
436 can be
437 .Bl -dash -offset indent -compact
439 a standard X11 color name, like
440 .Ql Dark Sea Green ,
442 a hexadecimal value in the form
443 .Cm # Ns Ar rgb , Cm # Ns Ar rrggbb , Cm # Ns Ar rrrgggbbb ,
445 .Cm # Ns Ar rrrrggggbbbb ,
447 an RGB color in the form
448 .Cm rgb( Ns Ar red Ns Cm \&, Ns Ar green Ns Cm \&, Ns Ar blue Ns Cm \&) ,
451 an RGBA color in the form
452 .Cm rgba( Ns Ar red Ns Cm \&, Ns Ar green Ns Cm \&, Ns
453 .Ar blue Ns Cm \&, Ns Ar alpha Ns Cm \&) .
455 .It Feedback
456 .Qq Ar id Ns Cm \&:color Cm rgb( Ns Ar red Ns Cm \&, Ns Ar green Ns Cm \&, Ns Ar blue Ns Cm \&)
458 .Qq Ar id Ns Cm \&:color Cm rgba( Ns Ar red Ns Cm \&, Ns Ar green Ns Cm \&, Ns Ar blue Ns Cm \&, Ns Ar alpha Ns Cm \&) .
459 .Ar red , green ,
461 .Ar blue
462 lie between 0 and 255, and
463 .Ar alpha
464 between 0 and 1.
466 .Ss GtkComboBoxText
468 .Cm GtkComboBoxText
469 should contain a
470 .Cm GtkEntry .
471 .Bl -tag -width "commands "
472 .It Commands
473 .Qq Ar id Ns Cm :prepend_text Ar string
475 .Qq Ar id Ns Cm :append_text Ar string
476 prepend/append a new selectable item marked
477 .Ar string .
479 .Qq Ar id Ns Cm :insert_text Ar position string
480 inserts item
481 .Ar string
483 .Ar position .
485 .Qq Ar id Ns Cm :remove Ar position
486 removes the item at
487 .Ar position .
488 .It Feedback
489 .Qq Ar entry_id Ns Cm \&:text Ar text ,
490 .Ar entry_id
491 being the id of the child
492 .Cm GtkEntry .
494 .Ss GtkDialog
496 .Cm GtkDialog
497 with id
498 .Ar foo
499 will be invoked by a
500 .Sx GtkMenuItem
501 or a
502 .Sx GtkImageMenuItem
503 with id
504 .Ar foo Ns Cm _invoke .
507 .Cm GtkDialog
508 should have a
509 .Sq Cancel
510 .Sx GtkButton
511 with id
512 .Ar foo Ns Cm _cancel
513 .Po Cm main_cancel
514 if the dialog is the sole window of the GUI and therefore named
515 .Cm main
516 .Pc .
518 If the
519 .Cm GtkDialog
520 has an
521 .Sq Ok
522 .Sx GtkButton
523 with id
524 .Ar foo Ns Cm _ok ,
525 it will take care of hiding the dialog window.
526 .Bl -tag -width "commands "
527 .It Commands
528 .Qq Ar id Ns Cm :set_title Ar string
529 replaces the text in the title bar with
530 .Ar string .
532 .Qq Ar id Ns Cm :resize Bq Ar width height
533 changes the size of the dialog window to
534 .Ar width
536 .Ar height
537 pixels if specified, or to the default size.
539 .Qq Ar id Ns Cm :move Ar x y
540 moves the dialog window to position
541 .Pq Ar x , y .
543 .Qq Ar id Ns Cm :fullscreen
545 .Qq Ar id Ns Cm :unfullscreen
546 switch fullscreen mode on and off.
547 .It Feedback
548 .Qq Ar id Ns Cm \&:closed
549 if the
550 .Cm GtkDialog
551 window was closed by the window manager.
553 .Ss GtkDrawingArea
554 Drawing commands
555 expect a context parameter of the form
556 .Bro Ar n Ns | Ns Cm = Ns Ar n Ns | Ns Ar n Ns Cm < Ns Ar m Brc
557 where
558 .Ar n
559 is an arbitrary non-negative integer that can be used later to
560 reference the command.
561 The first form,
562 .Ar n ,
563 appends its command to the current list of drawing operations.
564 The second form,
565 .Cm = Ns Ar n ,
566 replaces the first drawing operation with context parameter
567 .Ar n
568 by the new command.
569 The third form,
570 .Ar n Ns Cm < Ns Ar m ,
571 inserts its command before the first drawing operation with context
572 parameter
573 .Ar m .
574 Both second and third form fall back to appending.
576 The default coordinate system is a left-handed system with its origin
577 in the upper-left corner.
578 Angles increase from the positive X axis towards the positve Y axis
579 .Pq clockwise in the default system .
580 .Bl -tag -width "commands "
581 .It Commands
582 .Qq Ar id Ns Cm :arc Bro Ar n Ns | Ns Cm = Ns Ar n Ns | Ns Ar n Ns Cm < Ns Ar m Brc x y radius angle1 angle2
583 adds a circular arc to the current path.
584 The arc is centered at
585 .Pq Ar x , y
586 and proceeds from
587 .Ar angle1
589 .Ar angle2
590 .Pq in degrees .
592 .Qq Ar id Ns Cm :arc_negative Bro Ar n Ns | Ns Cm = Ns Ar n Ns | Ns Ar n Ns Cm < Ns Ar m Brc x y radius angle1 angle2
593 adds a circular arc to the current path.
594 The arc is centered at
595 .Pq Ar x , y
596 and proceeds in the direction of decreasing angles from
597 .Ar angle1
599 .Ar angle2
600 .Pq in degrees .
602 .Qq Ar id Ns Cm :close_path Bro Ar n Ns | Ns Cm = Ns Ar n Ns | Ns Ar n Ns Cm < Ns Ar m Brc
603 adds a line segment from the current point to the point most recently
604 passed to
605 .Ar id Ns Cm :move_to
607 .Ar id Ns Cm :rel_move_to .
609 .Qq Ar id Ns Cm :curve_to Bro Ar n Ns | Ns Cm = Ns Ar n Ns | Ns Ar n Ns Cm < Ns Ar m Brc x1 y1 x2 y2 x3 y3
610 adds a cubic Bezier spline from the current point to
611 .Pq Ar x3 , y3 ,
612 using
613 .Pq Ar x1 , y1
615 .Pq Ar x2 , y2
616 as control points.
617 If there is no current point, the curve will start at
618 .Pq Ar x1 , y1 .
620 .Qq Ar id Ns Cm :fill Bro Ar n Ns | Ns Cm = Ns Ar n Ns | Ns Ar n Ns Cm < Ns Ar m Brc
621 fills the current path and clears it.
623 .Qq Ar id Ns Cm :fill_preserve Bro Ar n Ns | Ns Cm = Ns Ar n Ns | Ns Ar n Ns Cm < Ns Ar m Brc
624 fills the current path without clearing it.
626 .Qq Ar id Ns Cm :line_to Bro Ar n Ns | Ns Cm = Ns Ar n Ns | Ns Ar n Ns Cm < Ns Ar m Brc x y
627 adds a line from the current point to
628 .Pq Ar x , y ,
629 or creates a new current point at
630 .Pq Ar x , y .
632 .Qq Ar id Ns Cm :move_to Bro Ar n Ns | Ns Cm = Ns Ar n Ns | Ns Ar n Ns Cm < Ns Ar m Brc x y
633 sets the current point to
634 .Pq Ar x , y .
636 .Qq Ar id Ns Cm :rectangle Bro Ar n Ns | Ns Cm = Ns Ar n Ns | Ns Ar n Ns Cm < Ns Ar m Brc x y width height
637 adds a rectangle to the current path.
638 The top left corner is at
639 .Pq Ar x , y .
641 .Qq Ar id Ns Cm :rel_curve_to Bro Ar n Ns | Ns Cm = Ns Ar n Ns | Ns Ar n Ns Cm < Ns Ar m Brc dx1 dy1 dx2 dy2 dx3 dy3
642 adds a cubic Bezier spline from the current point to
643 .Pq Ar dx3 , dy3 ,
644 using
645 .Pq Ar dx1 , dy1
647 .Pq Ar dx2 , dy2
648 as control points.
649 All coordinates are offsets relative to the current point.
651 .Qq Ar id Ns Cm :rel_line_to Bro Ar n Ns | Ns Cm = Ns Ar n Ns | Ns Ar n Ns Cm < Ns Ar m Brc dx dy
652 adds a line from the current point to a point offset from there by
653 .Pq Ar dx , dy .
655 .Qo Ar id Ns Cm :rel_move_for Bro Ar n Ns | Ns Cm = Ns Ar n Ns | Ns Ar n Ns Cm < Ns Ar m Brc
656 .Brq Cm c Ns | Ns Cm e Ns | Ns Cm n Ns | Ns Cm ne Ns | Ns Cm nw Ns | Ns Cm s Ns | Ns Cm se Ns | Ns Cm sw Ns | Ns Cm w
657 .Ar text
659 moves the current point such that
660 .Qq Ar id Ns Cm :show_text Ar n text
661 will place the specified reference point of
662 .Ar text
663 on the original current point.
665 .Qq Ar id Ns Cm :rel_move_to Bro Ar n Ns | Ns Cm = Ns Ar n Ns | Ns Ar n Ns Cm < Ns Ar m Brc dx dy
666 moves the current point by
667 .Pq Ar dx , dy .
669 .Qq Ar id Ns Cm :remove Ar n
670 removes the elements with context parameter
671 .Ar n
672 from the
673 .Cm GtkDrawingArea Ar id .
675 .Qq Ar id Ns Cm :rotate Bro Ar n Ns | Ns Cm = Ns Ar n Ns | Ns Ar n Ns Cm < Ns Ar m Brc Ar angle
676 rotates the user space axes by
677 .Ar angle
678 .Pq in degrees .
680 .Qq Ar id Ns Cm :scale Bro Ar n Ns | Ns Cm = Ns Ar n Ns | Ns Ar n Ns Cm < Ns Ar m Brc Ar sx sy
681 scales the user space axes by
682 .Pq Ar sx , sy .
684 .Qq Ar id Ns Cm :set_dash Bro Ar n Ns | Ns Cm = Ns Ar n Ns | Ns Ar n Ns Cm < Ns Ar m Brc l
685 sets the dash pattern to
686 .Ar l
688 .Ar l
689 off.
691 .Qq Ar id Ns Cm :set_dash Bro Ar n Ns | Ns Cm = Ns Ar n Ns | Ns Ar n Ns Cm < Ns Ar m Brc l1on l1off l2on l2off ...
692 resets the dash pattern to a line with arbitrary on/off portions.
694 .Qq Ar id Ns Cm :set_dash Bro Ar n Ns | Ns Cm = Ns Ar n Ns | Ns Ar n Ns Cm < Ns Ar m Brc
695 resets the dash pattern to a solid line.
697 .Qo Ar id Ns Cm :set_font_face Bro Ar n Ns | Ns Cm = Ns Ar n Ns | Ns Ar n Ns Cm < Ns Ar m Brc
698 .Brq Cm normal | italic | oblique
699 .Brq Cm normal | bold
700 .Bq Cm family
702 sets the font face for subsequent calls of
703 .Ar id Ns Cm :show_text .
705 .Qq Ar id Ns Cm :set_font_size Bro Ar n Ns | Ns Cm = Ns Ar n Ns | Ns Ar n Ns Cm < Ns Ar m Brc size
706 sets the font size for subsequent calls of
707 .Ar id Ns Cm :show_text .
709 .Qq Ar id Ns Cm :set_line_cap Bro Ar n Ns | Ns Cm = Ns Ar n Ns | Ns Ar n Ns Cm < Ns Ar m Brc Brq Cm butt | round | square
710 sets the line cap style.
711 Default is
712 .Cm butt .
714 .Qq Ar id Ns Cm :set_line_join Bro Ar n Ns | Ns Cm = Ns Ar n Ns | Ns Ar n Ns Cm < Ns Ar m Brc Brq Cm miter | round | bevel
715 sets the line junction style.
716 Default is
717 .Cm miter .
719 .Qq Ar id Ns Cm :set_line_width Bro Ar n Ns | Ns Cm = Ns Ar n Ns | Ns Ar n Ns Cm < Ns Ar m Brc width
720 sets the line width.
721 Default
722 .Ar width
723 is 2.
725 .Qq Ar id Ns Cm :set_source_rgba Bro Ar n Ns | Ns Cm = Ns Ar n Ns | Ns Ar n Ns Cm < Ns Ar m Brc color
726 sets the color.
727 .Ar color
728 is in the format used with
729 .Sx GtkColorButton .
731 .Qq Ar id Ns Cm :show_text Bro Ar n Ns | Ns Cm = Ns Ar n Ns | Ns Ar n Ns Cm < Ns Ar m Brc text
732 writes
733 .Ar text ,
734 beginning at the current point.
736 .Qq Ar id Ns Cm :stroke Bro Ar n Ns | Ns Cm = Ns Ar n Ns | Ns Ar n Ns Cm < Ns Ar m Brc
737 strokes the current path and clears it.
739 .Qq Ar id Ns Cm :stroke_preserve Bro Ar n Ns | Ns Cm = Ns Ar n Ns | Ns Ar n Ns Cm < Ns Ar m Brc
740 strokes the current path without clearing it.
742 .Qq Ar id Ns Cm :transform Bro Ar n Ns | Ns Cm = Ns Ar n Ns | Ns Ar n Ns Cm < Ns Ar m Brc Bq Ar xx yx xy yy x0 y0
743 modifies the current transformation matrix such that
745 .Dl Va x' Li = Ar xx Va x Li + Ar xy Va y Li + Ar x0 ,
746 .Dl Va y' Li = Ar yx Va y Li + Ar yy Va y Li + Ar y0 .
748 Default is resetting the current transformation matrix.
750 .Qq Ar id Ns Cm :translate Bro Ar n Ns | Ns Cm = Ns Ar n Ns | Ns Ar n Ns Cm < Ns Ar m Brc Ar tx ty
751 translates the user space origin by
752 .Pq Ar tx , ty .
753 .It Feedback
754 none
756 .Ss GtkEntry
757 .Bl -tag -width "commands "
758 .It Commands
759 .Qq Ar id Ns Cm :set_text Ar string
760 replaces the user-editable text with
761 .Ar string .
763 .Qq Ar id Ns Cm :set_placeholder_text Ar string
764 sets the
765 .Ar string
766 that is displayed when the entry is empty and unfocused.
767 .It Feedback
768 .Qq Ar id Ns Cm \&:text Ar text ,
769 once for each change of
770 .Ar text .
772 .Ss GtkEventBox
773 .Ar x , y
774 are mouse pointer coordinates relative to the
775 .Cm GtkEventBox .
776 .Bl -tag -width "commands "
777 .It Commands
778 none
779 .It Feedback
780 .Qq Ar id Ns Cm \&:button_press Ar b x y ,
781 .Qq Ar id Ns Cm \&:button_release Ar b x y
782 where
783 .Ar b
784 is the mouse button (normally 1, 2, or 3 for the left, middle, and
785 right button; others may exist).
787 .Qq Ar id Ns Cm \&:motion Ar x y
788 is reported repeatedly while the mouse is being moved with a button
789 pressed.
791 .Qq Ar id Ns Cm \&:key_press Ar key ,
792 .Ar key
793 being the key's name
794 .Po e.g.
795 .Ql Control_L ,
796 .Ql Tab ,
797 .Ql a
798 .Pc .
800 .Ss GtkExpander
801 .Bl -tag -width "commands "
802 .It Commands
803 .Qq Ar id Ns Cm :set_label Ar string
804 replaces the expander label text with
805 .Ar string .
807 .Qq Ar id Ns Cm :set_expanded Brq Cm 0 |  1
808 hides
809 .Pq Cm 0
810 the child widget, or makes it visible
811 .Pq Cm 1 .
812 .It Feedback
813 none
815 .Ss GtkFileChooserButton
816 .Bl -tag -width "commands "
817 .It Commands
818 .Qq Ar id Ns Cm :set_filename Ar path
819 preselects
820 .Ar path
821 to the extent it exists.
822 .It Feedback
823 .Qq Ar id Ns Cm \&:file Ar pathname
824 if the selection has changed.
826 .Ss GtkFileChooserDialog
828 .Cm GtkFileChooserDialog
829 with id
830 .Ar foo
831 will be invoked by a
832 .Sx GtkMenuItem
833 or a
834 .Sx GtkImageMenuItem
835 with id
836 .Ar foo Ns Cm _invoke .
839 .Cm GtkFileChooserDialog
840 should have an
841 .Sq OK
842 .Sx GtkButton
843 with id
844 .Ar foo Ns Cm _ok
845 .Po Cm main_ok
846 if the dialog is the sole window of the GUI and therefore named
847 .Cm main
848 .Pc .
851 .Cm GtkFileChooserDialog
852 may have a
853 .Sq Cancel
854 .Sx GtkButton
855 with id
856 .Ar foo Ns Cm _cancel
857 .Po Cm main_cancel
858 if the dialog is the sole window of the GUI and therefore named
859 .Cm main
860 .Pc .
863 .Cm GtkFileChooserDialog
864 may have an
865 .Sq Apply
866 .Sx GtkButton
867 with id
868 .Ar foo Ns Cm _apply
869 .Po Cm main_apply
870 if the dialog is the sole window of the GUI and therefore named
871 .Cm main
872 .Pc .
873 .Bl -tag -width "commands "
874 .It Commands
875 .Qq Ar id Ns Cm :set_filename Ar path
876 preselects
877 .Ar path
878 to the extent it exists.
880 .Qq Ar id Ns Cm :set_current_name Ar string
881 makes
882 .Ar string
883 the suggested filename, which may not yet exist.
884 .Ar string
885 should either resemble an absolute path, or the
886 .Ar directory
887 must be set separately by
888 .Ar id Ns Cm :set_filename Ar directory .
890 .Qq Ar id Ns Cm :set_title Ar string
891 replaces the text in the title bar with
892 .Ar string .
894 .Qq Ar id Ns Cm :resize Bq Ar width height
895 changes the size of the dialog window to
896 .Ar width
898 .Ar height
899 pixels if specified, or to the default size.
901 .Qq Ar id Ns Cm :move Ar x y
902 moves the dialog window to position
903 .Pq Ar x , y .
905 .Qq Ar id Ns Cm :fullscreen
907 .Qq Ar id Ns Cm :unfullscreen
908 switch fullscreen mode on and off.
909 .It Feedback
910 .Qq Ar id Ns Cm :file Ar pathname
911 and/or
912 .Qq Ar id Ns Cm :folder Ar pathname
914 .Qq Ar id Ns Cm \&:closed
915 if the
916 .Cm GtkFileChooserDialog
917 window was closed by the window manager.
919 .Ss GtkFontButton
920 .Bl -tag -width "commands "
921 .It Commands
922 .Qq Ar id Ns Cm :set_font_name Ar fontname
923 preselects the font.
924 .It Feedback
925 .Qq Ar id Ns Cm \&:font Ar fontname
927 .Ss GtkFrame
928 .Bl -tag -width "commands "
929 .It Commands
930 .Qq Ar id Ns Cm :set_label Ar text
931 replaces the frame label text with
932 .Ar string .
933 .It Feedback
934 none
936 .Ss GtkImage
937 .Bl -tag -width "commands "
938 .It Commands
939 .Qq Ar id Ns Cm :set_from_icon_name Ar icon-name
940 replaces the image with one of the standard icons.
942 .Qq Ar id Ns Cm :set_from_file Ar path
943 replaces the image by the one found at
944 .Ar path Ns .
945 .It Feedback
946 none
948 .Ss GtkLabel
949 .Bl -tag -width "commands "
950 .It Commands
951 .Qq Ar id Ns Cm :set_text Ar string
952 replaces the label text with
953 .Ar string .
954 .It Feedback
955 none
957 .Ss GtkMenuItem, GtkImageMenuItem
958 .Bl -tag -width "commands "
959 .It Commands
960 none
961 .It Feedback
963 .Cm GtkMenuItem
965 .Cm GtkImageMenuItem
966 with id
967 .Ar foo Ns Cm _invoke
968 will invoke the
969 .Sx GtkDialog
971 .Sx GtkFileChooserDialog
972 with id
973 .Ar foo
974 if it exists.
975 If there isn't any dialog attached to the
976 .Cm GtkMenuItem ,
977 it reports
978 .Qq Ar id Ns Cm \&:active Ar label .
980 .Ss GtkNotebook
981 .Bl -tag -width "commands "
982 .It Commands
983 .Qq Ar id Ns Cm :set_current_page Ar n
984 switches to zero-based page number
985 .Ar n .
986 .It Feedback
987 none
989 .Ss GtkPrintUnixDialog
990 .Bl -tag -width "commands "
991 .It Commands
992 .Qq Ar id Ns Cm :print Ar file.ps
993 opens the print dialog.
994 Pressing the
995 .Ql Print
996 button sends
997 .Ar file.ps
998 to the printer the user selected in the dialog.
999 .It Feedback
1000 .Qq Ar id Ns Cm \&:closed
1001 if the
1002 .Cm GtkPrintUnixDialog
1003 window was closed by the window manager.
1005 .Ss GtkProgressBar
1006 .Bl -tag -width "commands "
1007 .It Commands
1008 .Qq Ar id Ns Cm :set_fraction Ar x
1009 moves the progress bar to
1010 .Ar x
1011 .Pq between 0 and 1 .
1013 .Qq Ar id Ns Cm :set_text Bq Ar string
1014 replaces the text of the progress bar with
1015 .Ar string .
1016 Default is the progress percentage.
1017 .It Feedback
1018 none
1020 .Ss GtkRadioButton
1021 .Bl -tag -width "commands "
1022 .It Commands
1023 .Qq Ar id Ns Cm :set_active 1
1024 switches the button on.
1025 All other buttons of the same group will go off automatically.
1027 .Qq Ar id Ns Cm :set_label Ar string
1028 replaces the button text with
1029 .Ar string .
1030 .It Feedback
1031 .Qq Ar id Ns Cm \&:1
1032 if switched on, or
1033 .Qq Ar id Ns Cm \&:0
1034 otherwise.
1036 .Ss GtkScale
1037 .Bl -tag -width "commands "
1038 .It Commands
1039 .Qq Ar id Ns Cm :set_value Ar x
1040 moves the slider to value
1041 .Ar x .
1043 .Qq Ar id Ns Cm :set_fill_level Bq Ar x
1044 moves the fill level indicator to value
1045 .Ar x .
1046 Default is hiding the fill level indicator.
1048 .Qq Ar id Ns Cm :set_range Ar min max
1049 changes the range.
1051 .Qq Ar id Ns Cm :set_increments Ar step page
1052 sets the steps the slider moves while pressing arrow keys and
1053 .Ql Page_Up Ns
1054 .Pf / Ql Page_Down ,
1055 respectively.
1056 .It Feedback
1057 .Qq Ar id Ns Cm \&:value Ar number
1059 .Ss GtkScrolledWindow
1060 .Bl -tag -width "commands "
1061 .It Commands
1062 .Qq Ar id Ns Cm :hscroll Ar position
1064 .Qq Ar id Ns Cm :vscroll Ar position
1065 scroll
1066 .Ar position
1067 to the left or top edge of the
1068 .Cm GtkScrolledWindow ,
1069 respectively.
1071 .Qq Ar id Ns Cm :hscroll_to_range Ar pos0 pos1
1073 .Qq Ar id Ns Cm :vscroll_to_range Ar pos0 pos1
1074 scroll, if necessary, the range between
1075 .Ar pos0
1077 .Ar pos1
1078 into the
1079 .Cm GtkScrolledWindow .
1080 If the range is greater than the window, the initial part of the range
1081 will be visible.
1082 .It Feedback
1083 none
1085 .Ss GtkSocket
1086 .Cm GtkSocket
1087 may be unsupported by Glade, but its definition can be inserted
1088 manually into the GtkBuilder
1089 .Pq Pa .ui
1090 file:
1091 .Bd -literal -offset indent
1092 <child>
1093   <object class="GtkSocket" id="socket1">
1094     <property name="visible">True</property>
1095     <property name="can_focus">True</property>
1096   </object>
1097   <packing>
1098     <property name="expand">True</property>
1099     <property name="fill">True</property>
1100     <property name="position">1</property>
1101   </packing>
1102 </child>
1104 .Bl -tag -width "commands "
1105 .It Commands
1106 .Qq Ar id Ns Cm :id
1107 requests a feedback message containing the socket
1108 .Ar xid .
1109 .It Feedback
1110 .Qq Ar id Ns Cm :id Ar xid
1111 can be used by another process to XEmbed its widgets into the
1112 .Cm GtkSocket .
1114 .Qq Ar id Ns Cm :plug-added ,
1116 .Ar id Ns
1117 .Cm :plug-removed
1118 .Qc .
1119 Notification that the other process has inserted its widgets into or
1120 removed them from the
1121 .Cm GtkSocket .
1123 .Ss GtkSpinButton
1124 .Bl -tag -width "commands "
1125 .It Commands
1126 .Qq Ar id Ns Cm :set_text Ar string
1127 sets the selected value to
1128 .Ar string .
1130 .Qq Ar id Ns Cm :set_range Ar min max
1131 changes the range.
1133 .Qq Ar id Ns Cm :set_increments Ar step page
1134 sets the steps the value changes while pressing arrow keys/left mouse
1135 button, and
1136 .Ql Page_Up Ns
1137 .Pf / Ql Page_Down Ns
1138 /middle mouse button,
1139 respectively.
1140 .It Feedback
1141 .Qq Ar id Ns Cm \&:text Ar text
1143 .Ss GtkSpinner
1144 .Bl -tag -width "commands "
1145 .It Commands
1146 .Qq Ar id Ns Cm :start
1148 .Qq Ar id Ns Cm :stop
1149 start and stop the spinner.
1150 .It Feedback
1151 none
1153 .Ss GtkStatusbar
1154 The context parameter
1155 .Ar c
1156 is an arbitrary non-whitespace string.
1157 .Bl -tag -width "commands "
1158 .It Commands
1159 .Qq Ar id Ns Cm :push_id Ar c string ,
1160 .Qq Ar id Ns Cm :push Ar string
1161 associate
1162 .Ar string
1163 with context parameter
1164 .Ar c
1166 .Ql 0 ,
1167 respectively, and display it in the statusbar.
1169 .Qq Ar id Ns Cm :pop_id Ar c ,
1170 .Qq Ar id Ns Cm :pop
1171 remove the latest entry associated with context parameter
1172 .Ar c
1174 .Ql 0 ,
1175 respectively, from the statusbar.
1177 .Qq Ar id Ns Cm :remove_all_id Ar c ,
1178 .Qq Ar id Ns Cm :remove_all
1179 remove the entries associated with context parameter
1180 .Ar c
1182 .Ql 0 ,
1183 respectively, from the statusbar.
1184 .It Feedback
1185 none
1187 .Ss GtkSwitch
1188 .Bl -tag -width "commands "
1189 .It Commands
1190 .Qq Ar id Ns Cm :set_active Brq Cm 0 | 1
1191 turns the switch off
1192 .Pq Cm 0
1193 or on
1194 .Pq Cm 1 .
1195 .It Feedback
1196 .Qq Ar id Ns Cm \&:1
1197 if switched on, or
1198 .Qq Ar id Ns Cm \&:0
1199 otherwise.
1201 .Ss GtkTextView
1202 There should be a dedicated
1203 .Sx GtkButton
1204 for sending (parts of) the text.
1205 If the id of the
1206 .Cm GtkTextView
1208 .Ar foo ,
1210 .Sx GtkButton
1211 with id
1212 .Ar foo Ns Cm _send_text
1213 will send the content of the
1214 .Cm GtkTextView ;
1216 .Sx GtkButton
1217 with id
1218 .Ar foo Ns Cm _send_selection
1219 will send the highlighted part the
1220 .Cm GtkTextView .
1221 .Bl -tag -width "commands "
1222 .It Commands
1223 .Qq Ar id Ns Cm :set_text Ar string
1224 replaces the user-editable text with (potentially empty)
1225 .Ar string Ns .
1227 .Qq Ar id Ns Cm :delete
1228 deletes the text.
1230 .Qq Ar id Ns Cm :insert_at_cursor Ar string
1231 inserts
1232 .Ar string
1233 at cursor position.
1235 .Qq Ar id Ns Cm :place_cursor Brq Ar position | Cm end
1236 places the text cursor at
1237 .Ar position
1238 or at the end of the text.
1240 .Qq Ar id Ns Cm :place_cursor_at_line Ar line
1241 places the text cursor at the beginning of
1242 .Ar line .
1244 .Qq Ar id Ns Cm :scroll_to_cursor
1245 scrolls to the cursor position if necessary.
1247 .Qq Ar id Ns Cm :save Ar file
1248 stores in
1249 .Ar file
1252 command containing the text.
1253 .It Feedback
1254 .Qq Ar button_id Ns Cm :text Ar text ,
1255 .Ar button_id
1256 being the id of the
1257 .Sx GtkButton .
1258 Line endings in
1259 .Ar text
1260 are replaced by
1261 .Cm \en ,
1262 and backslashes are replaced by
1263 .Cm \e\e .
1265 .Ss GtkToggleButton
1266 .Bl -tag -width "commands "
1267 .It Commands
1268 .Qq Ar id Ns Cm :set_active Brq Cm 0 | 1
1269 switches the button off
1270 .Pq Cm 0
1271 or on
1272 .Pq Cm 1 .
1274 .Qq Ar id Ns Cm :set_label Ar string
1275 replaces the button text with
1276 .Ar string .
1277 .It Feedback
1278 .Qq Ar id Ns Cm \&:1
1279 if switched on, or
1280 .Qq Ar id Ns Cm \&:0
1281 otherwise.
1283 .Ss GtkTreeView
1285 can deal with columns of type
1286 .Cm gboolean , gint , guint , glong , gulong , gint64 , guint64 , gfloat , gdouble ,
1288 .Cm gchararray .
1290 .Ar row
1292 .Ar column
1293 refer to the underlying model
1294 .Cm ( GtkListStore
1296 .Cm GtkTreeStore ) .
1297 .Ar row
1298 is a sequence of one or more colon-separated integers, e.g.
1299 .Ql 3
1301 .Ql 0:0:1 .
1302 .Bl -tag -width "commands "
1303 .It Commands
1304 .Qq Ar id Ns Cm :set Ar row column data
1305 replaces the content at
1306 .Pq Ar row , column
1307 with
1308 .Ar data
1309 (which should be compatible with the type of
1310 .Ar column ) .
1311 If necessary, new tree nodes are created to obtain the minimal tree
1312 structure needed to support
1313 .Ar row .
1315 .Qq Ar id Ns Cm :insert_row Brq Ar row Bo Cm as_child Bc | Cm end
1316 inserts a new, empty row; either as a sibling of
1317 .Ar row
1318 at position
1319 .Ar row ,
1320 or as a child of
1321 .Ar row ,
1322 or at the end of the list, respectively.
1324 .Qq Ar id Ns Cm :move_row Ar origin Brq Ar destination | Cm end
1325 moves the row at
1326 .Ar origin
1327 within its current level to
1328 .Ar destination
1329 or to the end.
1331 .Qq Ar id Ns Cm :remove_row Ar row
1332 removes the row at position
1333 .Ar row .
1335 .Qq Ar id Ns Cm :clear
1336 removes all rows.
1338 .Qq Ar id Ns Cm :expand Ar row
1339 expands one level of the subtree below
1340 .Ar row .
1342 .Qq Ar id Ns Cm :expand_all Bq Ar row
1343 expands the subtree below
1344 .Ar row ,
1345 or the whole tree.
1347 .Qq Ar id Ns Cm :collapse Bq Ar row
1348 collapses the subtree below
1349 .Ar row ,
1350 or the whole tree.
1352 .Qq Ar id Ns Cm :set_cursor Bq Ar row
1353 sets the cursor to
1354 .Ar row ,
1355 or unsets it.
1357 .Qq Ar id Ns Cm :scroll Ar row column
1358 scrolls the cell at
1359 .Pq Ar row , column
1360 into view.
1362 .Qq Ar id Ns Cm :save Ar file
1363 stores the content of the underlying model as a sequence of
1365 commands into
1366 .Ar file .
1367 .It Feedback
1368 .Qq Ar id Ns Cm \&:clicked
1370 .Qq Ar id Ns Cm \&: Ns Ar column_type row column value ,
1371 one message per cell in the underlying model for each selected row; or
1373 .Qq Ar id Ns Cm \&: Ns Ar column_type row column new_value ,
1374 if the cell at
1375 .Pq Ar row , column
1376 has been edited.
1378 .Ss GtkTreeViewColumn
1379 .Bl -tag -width "commands "
1380 .It Commands
1381 none
1382 .It Feedback
1383 .Qq Ar id Ns Cm \&:clicked
1385 .Ss GtkWindow
1386 .Bl -tag -width "commands "
1387 .It Commands
1388 .Qq Ar id Ns Cm :set_title Ar string
1389 replaces the text in the title bar with
1390 .Ar string .
1392 .Qq Ar id Ns Cm :resize Bq Ar width height
1393 changes the window size to
1394 .Ar width
1396 .Ar height
1397 pixels if specified, or to the default size.
1399 .Qq Ar id Ns Cm :move Ar x y
1400 moves the window to position
1401 .Pq Ar x , y .
1403 .Qq Ar id Ns Cm :fullscreen
1405 .Qq Ar id Ns Cm :unfullscreen
1406 switch fullscreen mode on and off.
1407 .It Feedback
1408 .Qq Ar id Ns Cm \&:closed
1409 if the
1410 .Cm GtkWindow
1411 was closed by the window manager.
1413 .Sh EXIT STATUS
1414 .Ex -std
1415 .Sh EXAMPLES
1416 .Ss Discovering Pipeglade Interactively
1417 Suppose the interface in
1418 .Pa ./pipeglade.ui
1419 has a
1420 .Sx GtkLabel Ql label1
1421 and a
1422 .Sx GtkButton Ql button1 .
1423 After invoking
1425 .Dl pipeglade
1427 and clicking the
1428 .Sx GtkButton , Ql button1:clicked
1429 will be reported on the terminal.
1430 Typing
1432 .Dl label1:set_text The Button
1434 will change the text shown on the label into
1435 .Ql The Button .
1436 .Ss One-Shot File Dialog
1437 Suppose the interface in
1438 .Pa ./simple_open.ui
1439 contains a
1440 .Sx GtkFileChooserDialog
1441 with an
1442 .Sq OK
1443 .Sx GtkButton
1444 whose id is
1445 .Ql main_ok .
1446 Invoking
1448 .Dl pipeglade -u simple_open.ui
1450 will open the dialog; pressing
1451 .Sq OK
1452 will close it after sending the selected filename to
1453 .Va stdout .
1454 .Ss One-Shot User Notification
1455 If the interface in
1456 .Pa ./simple_dialog.ui
1457 contains a
1458 .Sx GtkLabel Ql label1 ,
1459 then
1460 .Bd -literal -offset indent
1461 pipeglade -u simple_dialog.ui <<< \e
1462     "label1:set_text NOW READ THIS!"
1464 will set the label text accordingly and wait for user input.
1465 .Ss Continuous Input
1466 The following shell command displays a running clock:
1467 .Bd -literal -offset indent
1468 while true; do
1469     echo "label1:set_text `date`";
1470     sleep 1;
1471 done | pipeglade -u simple_dialog.ui
1473 .Ss Continuous Input and Output
1474 The following shell script fragment sets up
1476 for continuous communication with another program,
1477 .Pa main_prog :
1478 .Bd -literal -offset indent
1479 pipeglade -i in.fifo -o out.fifo -b
1480 main_prog <out.fifo >in.fifo
1482 .Sh SEE ALSO
1483 .Xr dialog 1 ,
1484 .Xr glade 1 ,
1485 .Xr gxmessage 1 ,
1486 .Xr kdialog 1 ,
1487 .Xr whiptail 1 ,
1488 .Xr xmessage 1 ,
1489 .Xr zenity 1
1490 .Sh AUTHOR
1492 was written by
1493 .An Bert Burgemeister
1494 .Aq Mt trebbu@googlemail.com .
1495 .Sh BUGS
1496 Due to what appears to be a bug in cairo v1.14.0,
1498 used with this library version occasionally crashes on
1499 .Cm GtkDrawingArea
1500 commands.