1 .\" Copyright (c) 2014-2016 Bert Burgemeister <trebbu@googlemail.com>
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:
11 .\" The above copyright notice and this permission notice shall be
12 .\" included in all copies or substantial portions of the Software.
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.
27 .Nd pipe-driven GTK+ interface
34 .Op Fl u Ar builder-file
35 .Op Fl e Ar parent-xid
38 .Op Fl -display Ar X-server
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
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
52 Simple one-shot dialogs as well as more complex, long-running programs
62 if necessary, and uses it for command input.
64 A command is a line of text.
66 .Qq Ar name Ns Cm \&: Ns Ar action Bq Ar data
69 is the name of the receiving widget;
71 is separated from the rest of the command by a single whitespace
73 Commands whose first non-whitespace character is
75 are considered comments and ignored silently, as are empty input lines.
76 Any occurences of the two-character sequences
80 will be converted into newline or carriage return, respectively.
81 Every other character following a backslash will be left unchanged,
82 but the backslash will be removed.
83 Invalid commands are reported on
85 and are otherwise ignored.
88 for applicable commands.
92 exists but is not a named pipe.
95 is deleted upon successful program termination.
97 Default command input is
102 if necessary, and uses it for output of feedback messages from the
103 graphical user interface.
105 A feedback message is a line of text; its format is
106 .Qq Ar name Ns Cm \&: Ns Ar info Bq Ar data
109 is the name of the sending widget.
112 for possible feedback messages.
116 exists but is not a named pipe.
119 is deleted upon successful program termination.
121 Default feedback-message output is
126 in the background after printing its process ID to
129 It is an error if option
136 .It Fl u Ar builder-file
137 Displays the graphical user interface
139 which should be created using the
141 user interface designer and saved in GtkBuilder (.ui) format.
142 Widget names should be alphanumeric, including underscores, and the
143 main window must be named
148 .It Fl e Ar parent-xid
149 Embeds the main window into the XEmbed socket
153 For each command, append to
159 is the number of microseconds elapsed during
164 are separated by a tab character.
176 .It Fl -display Ar X-server
179 for user interaction.
181 Prints a help message and exits.
183 Prints the versions of the underlying GTK+ and cairo libraries and
191 The widget classes able to communicate through
198 .Sx GtkComboBoxText ,
204 .Sx GtkFileChooserButton ,
205 .Sx GtkFileChooserDialog ,
210 .Sx GtkMenuItem, GtkImageMenuItem ,
212 .Sx GtkPrintUnixDialog ,
216 .Sx GtkScrolledWindow
223 .Sx GtkToggleButton ,
225 .Sx GtkTreeViewColumn ,
230 references a widget by the
232 it is given in Glade.
237 is represented by the
239 attribute of the referenced object; therefore, a
246 .Dl <object class="GtkWindow" id="foo"> .
247 .Ss Any Widget (including widgets not mentioned above)
248 .Bl -tag -width "commands "
250 .Qq Ar name Ns Cm :set_sensitive Brq Cm 0 | 1
251 makes the widget grayed out
256 .Qq Ar name Ns Cm :set_visible Brq Cm 0 | 1
259 the widget, or makes it visible
262 .Qq Ar name Ns Cm :grab_focus
263 puts the keyboard focus onto the widget, if possible.
265 .Qq Ar name Ns Cm :set_size_request Bq Ar width height
266 sets the widget's minimum size to
270 Default is the widget's natural size.
273 .Ar name Ns Cm :style
274 .Bo Ar prop Ns Cm \&: Ns Ar val Ns Bo Cm \&; Ar prop Ns Cm \&: Ns Ar val ... Bc Bc
278 of the widget style to
280 Properties not explicitly specified are reset to their default values.
282 .Bl -dash -offset indent -compact
284 .Ql label1:style font:Bold 11; background-color:green
286 .Ql label1:style font-style:italic; font-weight:bold; color:blue
288 .Ql frame1:style border-color:red yellow; border-width:5px
290 .Ql frame1:style border-radius:10px; transition:10s
292 For a description of possible color notations see
295 .Qq Ar name Ns Cm :set_tooltip_text Bq Ar text
296 sets the widget's tooltip
298 Default is disabling the tooltip.
300 .Qq Ar name Ns Cm :force
301 simulates a click on the
303 d widget, triggering a response as described with the widgets below.
305 .Bl -dash -offset indent -compact
307 The command is ignored by
315 .Sx GtkTreeViewColumn ;
317 .Sx GtkCalendar , GtkEntry , GtkFileChooserButton , GtkScale ,
320 report the currently selected item;
325 just open their respective dialogs.
328 .Qq Ar name Ns Cm :load Ar file
335 is required but ignored.
337 commands may be nested but on attempts to read from the same file, the
348 .Qq Ar name Ns Cm :main_quit
349 kills the user interface.
352 is required but ignored.
355 .Bl -tag -width "commands "
357 .Qq Ar name Ns Cm :set_label Ar string
358 replaces the button text with
361 .Qq Ar name Ns Cm \&:clicked
364 s with names ending in
365 .Cm _ok , _apply , _cancel , _send_text ,
368 may work differently; see
369 .Sx GtkDialog , GtkFileChooserDialog ,
375 .Bl -tag -width "commands "
377 .Qq Ar name Ns Cm :select_date Ar yyyy Ns Cm - Ns Ar mm Ns Cm - Ns Ar dd
378 selects the date on the calendar.
380 .Qq Ar name Ns Cm :mark_day Ar day
385 .Qq Ar name Ns Cm :clear_marks
386 unmarks all days on the calendar.
388 .Qq Ar name Ns Cm \&:clicked Ar yyyy Ns Cm - Ns Ar mm Ns Cm - Ns Ar dd
390 .Qq Ar name Ns Cm \&:doubleclicked Ar yyyy Ns Cm - Ns Ar mm Ns Cm - Ns Ar dd
393 .Bl -tag -width "commands "
395 .Qq Ar name Ns Cm :set_active Brq Cm 0 | 1
396 switches the check mark off
401 .Qq Ar name Ns Cm :set_label Ar string
402 replaces the button text with
405 .Qq Ar name Ns Cm \&:1
407 .Qq Ar name Ns Cm \&:0
411 .Bl -tag -width "commands "
413 .Qq Ar name Ns Cm :set_color Ar color
414 preselects the color.
417 .Bl -dash -offset indent -compact
419 a standard X11 color name, like
422 a hexadecimal value in the form
423 .Cm # Ns Ar rgb , Cm # Ns Ar rrggbb , Cm # Ns Ar rrrgggbbb ,
425 .Cm # Ns Ar rrrrggggbbbb ,
427 an RGB color in the form
428 .Cm rgb( Ns Ar red Ns Cm \&, Ns Ar green Ns Cm \&, Ns Ar blue Ns Cm \&) ,
431 an RGBA color in the form
432 .Cm rgba( Ns Ar red Ns Cm \&, Ns Ar green Ns Cm \&, Ns
433 .Ar blue Ns Cm \&, Ns Ar alpha Ns Cm \&) .
436 .Qq Ar name Ns Cm \&:color Cm rgb( Ns Ar red Ns Cm \&, Ns Ar green Ns Cm \&, Ns Ar blue Ns Cm \&)
438 .Qq Ar name 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 \&) .
442 lie between 0 and 255, and
451 .Bl -tag -width "commands "
453 .Qq Ar name Ns Cm :prepend_text Ar string
455 .Qq Ar name Ns Cm :append_text Ar string
456 prepend/append a new selectable item marked
459 .Qq Ar name Ns Cm :insert_text Ar position string
465 .Qq Ar name Ns Cm :remove Ar position
469 .Qq Ar entry_name Ns Cm \&:text Ar text ,
471 being the name of the child
484 .Ar foo Ns Cm _invoke .
492 .Ar foo Ns Cm _cancel
494 if the dialog is the sole window of the GUI and therefore named
505 it will take care of hiding the dialog window.
506 .Bl -tag -width "commands "
508 .Qq Ar name Ns Cm :set_title Ar string
509 replaces the text in the title bar with
512 .Qq Ar name Ns Cm :resize Bq Ar width height
513 changes the size of the dialog window to
517 pixels if specified, or to the default size.
519 .Qq Ar name Ns Cm :move Ar x y
520 moves the dialog window to position
523 .Qq Ar name Ns Cm :fullscreen
525 .Qq Ar name Ns Cm :unfullscreen
526 switch fullscreen mode on and off.
528 .Qq Ar name Ns Cm \&:closed
531 window was closed by the window manager.
534 Most drawing commands expect an
536 parameter (an arbitrary non-negative integer) which can be used to
537 reference the command for later removal.
539 All coordinates refer to a left-handed coordinate system with its
540 origin in the upper-left corner.
541 .Bl -tag -width "commands "
543 .Qq Ar name Ns Cm :arc Ar id x y radius angle1 angle2
544 adds a circular arc to the current path.
545 The arc is centered at
547 and proceeds clockwise from
555 .Qq Ar name Ns Cm :arc_negative Ar id x y radius angle1 angle2
556 adds a circular arc to the current path.
557 The arc is centered at
559 and proceeds counterclockwise from
567 .Qq Ar name Ns Cm :close_path Ar id
568 adds a line segment from the current point to the point most recently
570 .Ar name Ns Cm :move_to
572 .Ar name Ns Cm :rel_move_to .
574 .Qq Ar name Ns Cm :curve_to Ar id x1 y1 x2 y2 x3 y3
575 adds a cubic Bezier spline from the current point to
582 If there is no current point, the curve will start at
585 .Qq Ar name Ns Cm :fill Ar id
586 fills the current path and clears it.
588 .Qq Ar name Ns Cm :fill_preserve Ar id
589 fills the current path without clearing it.
591 .Qq Ar name Ns Cm :line_to Ar id x y
592 adds a line from the current point to
594 or creates a new current point at
597 .Qq Ar name Ns Cm :move_to Ar id x y
598 sets the current point to
601 .Qq Ar name Ns Cm :rectangle Ar id x y width height
602 adds a rectangle to the current path.
603 The top left corner is at
606 .Qq Ar name Ns Cm :rel_curve_to Ar id dx1 dy1 dx2 dy2 dx3 dy3
607 adds a cubic Bezier spline from the current point to
614 All coordinates are offsets relative to the current point.
616 .Qq Ar name Ns Cm :rel_line_to Ar id dx dy
617 adds a line from the current point to a point offset from there by
620 .Qo Ar name Ns Cm :rel_move_for Ar id Brq Cm c | e | n | ne | nw | s | se | sw | w
623 moves the current point such that
624 .Qq Ar name Ns Cm :show_text Ar id text
625 will place the specified reference point of
627 on the original current point.
629 .Qq Ar name Ns Cm :rel_move_to Ar id dx dy
630 moves the current point by
633 .Qq Ar name Ns Cm :remove Ar id
634 removes the elements with
637 .Cm GtkDrawingArea Ar name .
639 .Qq Ar name Ns Cm :set_dash Ar id l
640 sets the dash pattern to
646 .Qq Ar name Ns Cm :set_dash Ar id l1on l1off l2on l2off ...
647 resets the dash pattern to a line with arbitrary on/off portions.
649 .Qq Ar name Ns Cm :set_dash Ar id
650 resets the dash pattern to a solid line.
652 .Qo Ar name Ns Cm :set_font_family Ar id Brq Cm normal | italic | oblique
653 .Brq Cm normal | bold
656 sets the font face for subsequent calls of
657 .Ar name Ns Cm :show_text .
659 .Qq Ar name Ns Cm :set_font_size Ar id size
660 sets the font size for subsequent calls of
661 .Ar name Ns Cm :show_text .
663 .Qq Ar name Ns Cm :set_line_cap Ar id Brq Cm butt | round | square
664 sets the line cap style.
666 .Qq Ar name Ns Cm :set_line_join Ar id Brq Cm miter | round | bevel
667 sets the line junction style.
669 .Qq Ar name Ns Cm :set_line_width Ar id width
672 .Qq Ar name Ns Cm :set_source_rgba Ar id color
675 is in the format used with
678 .Qq Ar name Ns Cm :show_text Ar id text
681 beginning at the current point.
683 .Qq Ar name Ns Cm :stroke Ar id
684 strokes the current path and clears it.
686 .Qq Ar name Ns Cm :stroke_preserve Ar id
687 strokes the current path without clearing it.
692 .Bl -tag -width "commands "
694 .Qq Ar name Ns Cm :set_text Ar string
695 replaces the user-editable text with
698 .Qq Ar name Ns Cm :set_placeholder_text Ar string
701 that is displayed when the entry is empty and unfocused.
703 .Qq Ar name Ns Cm \&:text Ar text ,
704 once for each change of
709 are mouse pointer coordinates relative to the
711 .Bl -tag -width "commands "
715 .Qq Ar name Ns Cm \&:button_press Ar b x y ,
716 .Qq Ar name Ns Cm \&:button_release Ar b x y
719 is the mouse button (normally 1, 2, or 3 for the left, middle, and
720 right button; others may exist).
722 .Qq Ar name Ns Cm \&:motion Ar x y
723 is reported repeatedly while the mouse is being moved with a button
726 .Qq Ar name Ns Cm \&:key_press Ar key ,
736 .Bl -tag -width "commands "
738 .Qq Ar name Ns Cm :set_label Ar string
739 replaces the expander label text with
742 .Qq Ar name Ns Cm :set_expanded Brq Cm 0 | 1
745 the child widget, or makes it visible
750 .Ss GtkFileChooserButton
751 .Bl -tag -width "commands "
753 .Qq Ar name Ns Cm :set_filename Ar path
756 to the extent it exists.
758 .Qq Ar name Ns Cm \&:file Ar pathname
759 if the selection has changed.
761 .Ss GtkFileChooserDialog
763 .Cm GtkFileChooserDialog
771 .Ar foo Ns Cm _invoke .
774 .Cm GtkFileChooserDialog
781 if the dialog is the sole window of the GUI and therefore named
786 .Cm GtkFileChooserDialog
791 .Ar foo Ns Cm _cancel
793 if the dialog is the sole window of the GUI and therefore named
798 .Cm GtkFileChooserDialog
805 if the dialog is the sole window of the GUI and therefore named
808 .Bl -tag -width "commands "
810 .Qq Ar name Ns Cm :set_filename Ar path
813 to the extent it exists.
815 .Qq Ar name Ns Cm :set_current_name Ar string
818 the suggested filename, which may not yet exist.
820 should either resemble an absolute path, or the
822 must be set separately by
823 .Ar name Ns Cm :set_filename Ar directory .
825 .Qq Ar name Ns Cm :set_title Ar string
826 replaces the text in the title bar with
829 .Qq Ar name Ns Cm :resize Bq Ar width height
830 changes the size of the dialog window to
834 pixels if specified, or to the default size.
836 .Qq Ar name Ns Cm :move Ar x y
837 moves the dialog window to position
840 .Qq Ar name Ns Cm :fullscreen
842 .Qq Ar name Ns Cm :unfullscreen
843 switch fullscreen mode on and off.
845 .Qq Ar name Ns Cm :file Ar pathname
847 .Qq Ar name Ns Cm :folder Ar pathname
849 .Qq Ar name Ns Cm \&:closed
851 .Cm GtkFileChooserDialog
852 window was closed by the window manager.
855 .Bl -tag -width "commands "
857 .Qq Ar name Ns Cm :set_font_name Ar fontname
860 .Qq Ar name Ns Cm \&:font Ar fontname
863 .Bl -tag -width "commands "
865 .Qq Ar name Ns Cm :set_label Ar text
866 replaces the frame label text with
872 .Bl -tag -width "commands "
874 .Qq Ar name Ns Cm :set_from_icon_name Ar icon-name
875 replaces the image with one of the standard icons.
877 .Qq Ar name Ns Cm :set_from_file Ar path
878 replaces the image by the one found at
884 .Bl -tag -width "commands "
886 .Qq Ar name Ns Cm :set_text Ar string
887 replaces the label text with
892 .Ss GtkMenuItem, GtkImageMenuItem
893 .Bl -tag -width "commands "
902 .Ar foo Ns Cm _invoke
906 .Sx GtkFileChooserDialog
910 If there isn't any dialog attached to the
913 .Qq Ar name Ns Cm \&:active Ar label .
916 .Bl -tag -width "commands "
918 .Qq Ar name Ns Cm :set_current_page Ar n
919 switches to zero-based page number
924 .Ss GtkPrintUnixDialog
925 .Bl -tag -width "commands "
927 .Qq Ar name Ns Cm :print Ar file.ps
928 opens the print dialog.
933 to the printer the user selected in the dialog.
935 .Qq Ar name Ns Cm \&:closed
937 .Cm GtkPrintUnixDialog
938 window was closed by the window manager.
941 .Bl -tag -width "commands "
943 .Qq Ar name Ns Cm :set_fraction Ar x
944 moves the progress bar to
946 .Pq between 0 and 1 .
948 .Qq Ar name Ns Cm :set_text Bq Ar string
949 replaces the text of the progress bar with
951 Default is the progress percentage.
956 .Bl -tag -width "commands "
958 .Qq Ar name Ns Cm :set_active 1
959 switches the button on.
960 All other buttons of the same group will go off automatically.
962 .Qq Ar name Ns Cm :set_label Ar string
963 replaces the button text with
966 .Qq Ar name Ns Cm \&:1
968 .Qq Ar name Ns Cm \&:0
972 .Bl -tag -width "commands "
974 .Qq Ar name Ns Cm :set_value Ar x
975 moves the slider to value
978 .Qq Ar name Ns Cm \&:value Ar floating_point_text
980 .Ss GtkScrolledWindow
981 .Bl -tag -width "commands "
983 .Qq Ar name Ns Cm :hscroll Ar position
985 .Qq Ar name Ns Cm :vscroll Ar position
988 to the left or top edge of the
989 .Cm GtkScrolledWindow ,
992 .Qq Ar name Ns Cm :hscroll_to_range Ar pos_0 pos_1
994 .Qq Ar name Ns Cm :vscroll_to_range Ar pos_0 pos_1
995 scroll, if necessary, the range between
1000 .Cm GtkScrolledWindow .
1001 If the range is greater than the window, the initial part of the range
1008 may be unsupported by Glade, but its definition can be inserted
1009 manually into the GtkBuilder
1012 .Bd -literal -offset indent
1014 <object class="GtkSocket" id="socket1">
1015 <property name="visible">True</property>
1016 <property name="can_focus">True</property>
1019 <property name="expand">True</property>
1020 <property name="fill">True</property>
1021 <property name="position">1</property>
1025 .Bl -tag -width "commands "
1027 .Qq Ar name Ns Cm :id
1028 requests a feedback message containing the socket
1031 .Qq Ar name Ns Cm :id Ar xid
1032 can be used by another process to XEmbed its widgets into the
1035 .Qq Ar name Ns Cm :plug-added ,
1040 Notification that the other process has inserted its widgets into or
1041 removed them from the
1045 .Bl -tag -width "commands "
1047 .Qq Ar name Ns Cm :set_text Ar string
1048 sets the selected value to
1051 .Qq Ar name Ns Cm \&:text Ar text
1054 .Bl -tag -width "commands "
1056 .Qq Ar name Ns Cm :start
1058 .Qq Ar name Ns Cm :stop
1059 start and stop the spinner.
1066 parameter is an arbitrary non-whitespace string.
1067 .Bl -tag -width "commands "
1069 .Qq Ar name Ns Cm :push_id Ar id string ,
1070 .Qq Ar name Ns Cm :push Ar string
1077 respectively, and display it in the statusbar.
1079 .Qq Ar name Ns Cm :pop_id Ar id ,
1080 .Qq Ar name Ns Cm :pop
1081 remove the latest entry associated with context id
1085 respectively, from the statusbar.
1087 .Qq Ar name Ns Cm :remove_all_id Ar id ,
1088 .Qq Ar name Ns Cm :remove_all
1089 remove the entries associated with context id
1093 respectively, from the statusbar.
1098 .Bl -tag -width "commands "
1100 .Qq Ar name Ns Cm :set_active Brq Cm 0 | 1
1101 turns the switch off
1106 .Qq Ar name Ns Cm \&:1
1108 .Qq Ar name Ns Cm \&:0
1112 There should be a dedicated
1114 for sending (parts of) the text.
1122 .Ar foo Ns Cm _send_text
1123 will send the content of the
1128 .Ar foo Ns Cm _send_selection
1129 will send the highlighted part the
1131 .Bl -tag -width "commands "
1133 .Qq Ar name Ns Cm :set_text Ar string
1134 replaces the user-editable text with (potentially empty)
1137 .Qq Ar name Ns Cm :delete
1140 .Qq Ar name Ns Cm :insert_at_cursor Ar string
1145 .Qq Ar name Ns Cm :place_cursor Brq Ar position | Cm end
1146 places the text cursor at
1148 or at the end of the text.
1150 .Qq Ar name Ns Cm :place_cursor_at_line Ar line
1151 places the text cursor at the beginning of
1154 .Qq Ar name Ns Cm :scroll_to_cursor
1155 scrolls to the cursor position if necessary.
1157 .Qq Ar name Ns Cm :save Ar file
1162 command containing the text.
1164 .Qq Ar button_name Ns Cm :text Ar text ,
1166 being the name of the
1172 and backslashes are replaced by
1176 .Bl -tag -width "commands "
1178 .Qq Ar name Ns Cm :set_active Brq Cm 0 | 1
1179 switches the button off
1184 .Qq Ar name Ns Cm :set_label Ar string
1185 replaces the button text with
1188 .Qq Ar name Ns Cm \&:1
1190 .Qq Ar name Ns Cm \&:0
1195 can deal with columns of type
1196 .Cm gboolean , gint , guint , glong , gulong , gint64 , guint64 , gfloat , gdouble ,
1203 refer to the underlying model
1206 .Cm GtkTreeStore ) .
1208 is a sequence of one or more colon-separated integers, e.g.
1212 .Bl -tag -width "commands "
1214 .Qq Ar name Ns Cm :set Ar row column data
1215 replaces the content at
1219 (which should be compatible with the type of
1221 If necessary, new tree nodes are created to obtain the minimal tree
1222 structure needed to support
1225 .Qq Ar name Ns Cm :insert_row Brq Ar row Bo Cm as_child Bc | Cm end
1226 inserts a new, empty row; either as a sibling of
1232 or at the end of the list, respectively.
1234 .Qq Ar name Ns Cm :move_row Ar origin Brq Ar destination | Cm end
1237 within its current level to
1241 .Qq Ar name Ns Cm :remove_row Ar row
1242 removes the row at position
1245 .Qq Ar name Ns Cm :clear
1248 .Qq Ar name Ns Cm :expand Ar row
1249 expands one level of the subtree below
1252 .Qq Ar name Ns Cm :expand_all Bq Ar row
1253 expands the subtree below
1257 .Qq Ar name Ns Cm :collapse Bq Ar row
1258 collapses the subtree below
1262 .Qq Ar name Ns Cm :set_cursor Bq Ar row
1267 .Qq Ar name Ns Cm :scroll Ar row column
1272 .Qq Ar name Ns Cm :save Ar file
1273 stores the content of the underlying model as a sequence of
1278 .Qq Ar name Ns Cm \&:clicked
1280 .Qq Ar name Ns Cm \&: Ns Ar column_type row column value ,
1281 one message per cell in the underlying model for each selected row; or
1283 .Qq Ar name Ns Cm \&: Ns Ar column_type row column new_value ,
1288 .Ss GtkTreeViewColumn
1289 .Bl -tag -width "commands "
1293 .Qq Ar name Ns Cm \&:clicked
1296 .Bl -tag -width "commands "
1298 .Qq Ar name Ns Cm :set_title Ar string
1299 replaces the text in the title bar with
1302 .Qq Ar name Ns Cm :resize Bq Ar width height
1303 changes the window size to
1307 pixels if specified, or to the default size.
1309 .Qq Ar name Ns Cm :move Ar x y
1310 moves the window to position
1313 .Qq Ar name Ns Cm :fullscreen
1315 .Qq Ar name Ns Cm :unfullscreen
1316 switch fullscreen mode on and off.
1318 .Qq Ar name Ns Cm \&:closed
1321 was closed by the window manager.
1326 .Ss Discovering Pipeglade Interactively
1327 Suppose the interface in
1330 .Sx GtkLabel Ql label1
1332 .Sx GtkButton Ql button1 .
1338 .Sx GtkButton , Ql button1:clicked
1339 will be reported on the terminal.
1342 .Dl label1:set_text Button Label
1344 will change the text shown on the label into
1346 .Ss One-Shot File Dialog
1347 Suppose the interface in
1348 .Pa ./simple_open.ui
1350 .Sx GtkFileChooserDialog
1358 .Dl pipeglade -u simple_open.ui
1360 will open the dialog; pressing
1362 will close it after sending the selected filename to
1364 .Ss One-Shot User Notification
1366 .Pa ./simple_dialog.ui
1368 .Sx GtkLabel Ql label1 ,
1370 .Bd -literal -offset indent
1371 pipeglade -u simple_dialog.ui <<< \e
1372 "label1:set_text NOW READ THIS!"
1374 will set the label text accordingly and wait for user input.
1375 .Ss Continuous Input
1376 The following shell command displays a running clock:
1377 .Bd -literal -offset indent
1379 echo "label1:set_text `date`";
1381 done | pipeglade -u simple_dialog.ui
1383 .Ss Continuous Input and Output
1384 The following shell script fragment sets up
1386 for continuous communication with another program,
1388 .Bd -literal -offset indent
1389 pipeglade -i in.fifo -o out.fifo &
1390 # wait for in.fifo and out.fifo to appear
1391 while test ! \e( -e in.fifo -a -e out.fifo \e); do :; done
1392 main_prog <out.fifo >in.fifo
1405 .An Bert Burgemeister
1406 .Aq Mt trebbu@googlemail.com .
1408 Due to what appears to be a bug in cairo v1.14.0,
1410 used with this library version occasionally crashes on