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
37 .Op Fl -display Ar X-server
42 is a helper program that displays graphical user
43 interfaces for other programs.
44 It renders the GUI definition found in a GtkBuilder XML file
45 (typically created using the
47 interface designer), and communicates with the main program solely
48 through plain text messages via pipes or fifos.
49 It provides access to a subset of features of a subset of widgets of
51 Simple one-shot dialogs as well as more complex, long-running programs
61 if necessary, and uses it for command input.
63 A command is a line of text.
65 .Qq Ar name Ns Cm \&: Ns Ar action Bq Ar data
68 is the name of the receiving widget;
70 is separated from the rest of the command by a single whitespace
72 Commands whose first non-whitespace character is
74 are considered comments and ignored silently, as are empty input lines.
75 Any occurences of the two-character sequences
79 will be converted into newline or carriage return, respectively.
80 Every other character following a backslash will be left unchanged,
81 but the backslash will be removed.
82 Invalid commands are reported on
84 and are otherwise ignored.
87 for applicable commands.
91 exists but is not a named pipe.
94 is deleted upon successful program termination.
96 Default command input is
101 if necessary, and uses it for output of feedback messages from the
102 graphical user interface.
104 A feedback message is a line of text; its format is
105 .Qq Ar name Ns Cm \&: Ns Ar info Bq Ar data
108 is the name of the sending widget.
111 for possible feedback messages.
115 exists but is not a named pipe.
118 is deleted upon successful program termination.
120 Default feedback-message output is
125 in the background after printing its process ID to
128 It is an error if option
135 .It Fl u Ar builder-file
136 Displays the graphical user interface
138 which should be created using the
140 user interface designer and saved in GtkBuilder (.ui) format.
141 Widget names should be alphanumeric, including underscores, and the
142 main window must be named
147 .It Fl e Ar parent-xid
148 Embeds the main window into the XEmbed socket
152 For each command, append to
158 is the number of microseconds elapsed during
163 are separated by a tab character.
170 .It Fl -display Ar X-server
173 for user interaction.
175 Prints a help message and exits.
177 Prints the versions of the underlying GTK+ and cairo libraries and
185 The widget classes able to communicate through
192 .Sx GtkComboBoxText ,
198 .Sx GtkFileChooserButton ,
199 .Sx GtkFileChooserDialog ,
204 .Sx GtkMenuItem, GtkImageMenuItem ,
206 .Sx GtkPrintUnixDialog ,
210 .Sx GtkScrolledWindow
217 .Sx GtkToggleButton ,
219 .Sx GtkTreeViewColumn ,
224 references a widget by the
226 it is given in Glade.
231 is represented by the
233 attribute of the referenced object; therefore, a
240 .Dl <object class="GtkWindow" id="foo"> .
241 .Ss Any Widget (including widgets not mentioned above)
242 .Bl -tag -width "commands "
244 .Qq Ar name Ns Cm :set_sensitive Brq Cm 0 | 1
245 makes the widget grayed out
250 .Qq Ar name Ns Cm :set_visible Brq Cm 0 | 1
253 the widget, or makes it visible
256 .Qq Ar name Ns Cm :grab_focus
257 puts the keyboard focus onto the widget, if possible.
259 .Qq Ar name Ns Cm :set_size_request Bq Ar width height
260 sets the widget's minimum size to
264 Default is the widget's natural size.
267 .Ar name Ns Cm :style
268 .Bo Ar prop Ns Cm \&: Ns Ar val Ns Bo Cm \&; Ar prop Ns Cm \&: Ns Ar val ... Bc Bc
272 of the widget style to
274 Properties not explicitly specified are reset to their default values.
276 .Bl -dash -offset indent -compact
278 .Ql label1:style font:Bold 11; background-color:green
280 .Ql label1:style font-style:italic; font-weight:bold; color:blue
282 .Ql frame1:style border-color:red yellow; border-width:5px
284 .Ql frame1:style border-radius:10px; transition:10s
286 For a description of possible color notations see
289 .Qq Ar name Ns Cm :set_tooltip_text Bq Ar text
290 sets the widget's tooltip
292 Default is disabling the tooltip.
294 .Qq Ar name Ns Cm :force
295 simulates a click on the
297 d widget, triggering a response as described with the widgets below.
299 .Bl -dash -offset indent -compact
301 The command is ignored by
309 .Sx GtkTreeViewColumn ;
311 .Sx GtkCalendar , GtkEntry , GtkFileChooserButton , GtkScale ,
314 report the currently selected item;
319 just open their respective dialogs.
322 .Qq Ar name Ns Cm :load Ar file
329 is required but ignored.
331 commands may be nested but on attempts to read from the same file, the
342 .Qq Ar name Ns Cm :main_quit
343 kills the user interface.
346 is required but ignored.
349 .Bl -tag -width "commands "
351 .Qq Ar name Ns Cm :set_label Ar string
352 replaces the button text with
355 .Qq Ar name Ns Cm \&:clicked
358 s with names ending in
359 .Cm _ok , _apply , _cancel , _send_text ,
362 may work differently; see
363 .Sx GtkDialog , GtkFileChooserDialog ,
369 .Bl -tag -width "commands "
371 .Qq Ar name Ns Cm :select_date Ar yyyy Ns Cm - Ns Ar mm Ns Cm - Ns Ar dd
372 selects the date on the calendar.
374 .Qq Ar name Ns Cm :mark_day Ar day
379 .Qq Ar name Ns Cm :clear_marks
380 unmarks all days on the calendar.
382 .Qq Ar name Ns Cm \&:clicked Ar yyyy Ns Cm - Ns Ar mm Ns Cm - Ns Ar dd
384 .Qq Ar name Ns Cm \&:doubleclicked Ar yyyy Ns Cm - Ns Ar mm Ns Cm - Ns Ar dd
387 .Bl -tag -width "commands "
389 .Qq Ar name Ns Cm :set_active Brq Cm 0 | 1
390 switches the check mark off
395 .Qq Ar name Ns Cm :set_label Ar string
396 replaces the button text with
399 .Qq Ar name Ns Cm \&:1
401 .Qq Ar name Ns Cm \&:0
405 .Bl -tag -width "commands "
407 .Qq Ar name Ns Cm :set_color Ar color
408 preselects the color.
411 .Bl -dash -offset indent -compact
413 a standard X11 color name, like
416 a hexadecimal value in the form
417 .Cm # Ns Ar rgb , Cm # Ns Ar rrggbb , Cm # Ns Ar rrrgggbbb ,
419 .Cm # Ns Ar rrrrggggbbbb ,
421 an RGB color in the form
422 .Cm rgb( Ns Ar red Ns Cm \&, Ns Ar green Ns Cm \&, Ns Ar blue Ns Cm \&) ,
425 an RGBA color in the form
426 .Cm rgba( Ns Ar red Ns Cm \&, Ns Ar green Ns Cm \&, Ns
427 .Ar blue Ns Cm \&, Ns Ar alpha Ns Cm \&) .
430 .Qq Ar name Ns Cm \&:color Cm rgb( Ns Ar red Ns Cm \&, Ns Ar green Ns Cm \&, Ns Ar blue Ns Cm \&)
432 .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 \&) .
436 lie between 0 and 255, and
445 .Bl -tag -width "commands "
447 .Qq Ar name Ns Cm :prepend_text Ar string
449 .Qq Ar name Ns Cm :append_text Ar string
450 prepend/append a new selectable item marked
453 .Qq Ar name Ns Cm :insert_text Ar position string
459 .Qq Ar name Ns Cm :remove Ar position
463 .Qq Ar entry_name Ns Cm \&:text Ar text ,
465 being the name of the child
478 .Ar foo Ns Cm _invoke .
486 .Ar foo Ns Cm _cancel
488 if the dialog is the sole window of the GUI and therefore named
499 it will take care of hiding the dialog window.
500 .Bl -tag -width "commands "
502 .Qq Ar name Ns Cm :set_title Ar string
503 replaces the text in the title bar with
506 .Qq Ar name Ns Cm :resize Bq Ar width height
507 changes the size of the dialog window to
511 pixels if specified, or to the default size.
513 .Qq Ar name Ns Cm :move Ar x y
514 moves the dialog window to position
517 .Qq Ar name Ns Cm :fullscreen
519 .Qq Ar name Ns Cm :unfullscreen
520 switch fullscreen mode on and off.
522 .Qq Ar name Ns Cm \&:closed
525 window was closed by the window manager.
528 Most drawing commands expect an
530 parameter (an arbitrary non-negative integer) which can be used to
531 reference the command for later removal.
533 All coordinates refer to a left-handed coordinate system with its
534 origin in the upper-left corner.
535 .Bl -tag -width "commands "
537 .Qq Ar name Ns Cm :arc Ar id x y radius angle1 angle2
538 adds a circular arc to the current path.
539 The arc is centered at
541 and proceeds clockwise from
549 .Qq Ar name Ns Cm :arc_negative Ar id x y radius angle1 angle2
550 adds a circular arc to the current path.
551 The arc is centered at
553 and proceeds counterclockwise from
561 .Qq Ar name Ns Cm :close_path Ar id
562 adds a line segment from the current point to the point most recently
564 .Ar name Ns Cm :move_to
566 .Ar name Ns Cm :rel_move_to .
568 .Qq Ar name Ns Cm :curve_to Ar id x1 y1 x2 y2 x3 y3
569 adds a cubic Bezier spline from the current point to
577 .Qq Ar name Ns Cm :fill Ar id
578 fills the current path and clears it.
580 .Qq Ar name Ns Cm :fill_preserve Ar id
581 fills the current path without clearing it.
583 .Qq Ar name Ns Cm :line_to Ar id x y
584 adds a line from the current point to
587 .Qq Ar name Ns Cm :move_to Ar id x y
588 sets the current point to
591 .Qq Ar name Ns Cm :rectangle Ar id x y width height
592 adds a rectangle to the current path.
593 The top left corner is at
596 .Qq Ar name Ns Cm :refresh
601 .Qq Ar name Ns Cm :rel_curve_to Ar id dx1 dy1 dx2 dy2 dx3 dy3
602 adds a cubic Bezier spline from the current point to
609 All coordinates are offsets relative to the current point.
611 .Qq Ar name Ns Cm :rel_line_to Ar id dx dy
612 adds a line from the current point to a point offset from there by
615 .Qq Ar name Ns Cm :rel_move_to Ar id dx dy
616 moves the current point by
619 .Qq Ar name Ns Cm :remove Ar id
620 removes the elements with
623 .Cm GtkDrawingArea Ar name .
625 .Qq Ar name Ns Cm :set_dash Ar id l
626 sets the dash pattern to
632 .Qq Ar name Ns Cm :set_dash Ar id l1on l1off l2on l2off ...
633 resets the dash pattern to a line with arbitrary on/off portions.
635 .Qq Ar name Ns Cm :set_dash Ar id
636 resets the dash pattern to a solid line.
638 .Qo Ar name Ns Cm :set_font_family Ar id Brq Cm normal | italic | oblique
639 .Brq Cm normal | bold
642 sets the font face for subsequent calls of
643 .Ar name Ns Cm :show_text .
645 .Qq Ar name Ns Cm :set_font_size Ar id size
646 sets the font size for subsequent calls of
647 .Ar name Ns Cm :show_text .
649 .Qq Ar name Ns Cm :set_line_cap Ar id Brq Cm butt | round | square
650 sets the line cap style.
652 .Qq Ar name Ns Cm :set_line_join Ar id Brq Cm miter | round | bevel
653 sets the line junction style.
655 .Qq Ar name Ns Cm :set_line_width Ar id width
658 .Qq Ar name Ns Cm :set_source_rgba Ar id color
661 is in the format used with
664 .Qq Ar name Ns Cm :show_text Ar id text
667 beginning at the current point.
669 .Qq Ar name Ns Cm :stroke Ar id
670 strokes the current path and clears it.
672 .Qq Ar name Ns Cm :stroke_preserve Ar id
673 strokes the current path without clearing it.
678 .Bl -tag -width "commands "
680 .Qq Ar name Ns Cm :set_text Ar string
681 replaces the user-editable text with
684 .Qq Ar name Ns Cm :set_placeholder_text Ar string
687 that is displayed when the entry is empty and unfocused.
689 .Qq Ar name Ns Cm \&:text Ar text ,
690 once for each change of
695 are mouse pointer coordinates relative to the
697 .Bl -tag -width "commands "
701 .Qq Ar name Ns Cm \&:button_press Ar b x y ,
702 .Qq Ar name Ns Cm \&:button_release Ar b x y
705 is the mouse button (normally 1, 2, or 3 for the left, middle, and
706 right button; others may exist).
708 .Qq Ar name Ns Cm \&:motion Ar x y
709 is reported repeatedly while the mouse is being moved with a button
712 .Qq Ar name Ns Cm \&:key_press Ar key ,
722 .Bl -tag -width "commands "
724 .Qq Ar name Ns Cm :set_label Ar string
725 replaces the expander label text with
728 .Qq Ar name Ns Cm :set_expanded Brq Cm 0 | 1
731 the child widget, or makes it visible
736 .Ss GtkFileChooserButton
737 .Bl -tag -width "commands "
739 .Qq Ar name Ns Cm :set_filename Ar path
742 to the extent it exists.
744 .Qq Ar name Ns Cm \&:file Ar pathname
745 if the selection has changed.
747 .Ss GtkFileChooserDialog
749 .Cm GtkFileChooserDialog
757 .Ar foo Ns Cm _invoke .
760 .Cm GtkFileChooserDialog
767 if the dialog is the sole window of the GUI and therefore named
772 .Cm GtkFileChooserDialog
777 .Ar foo Ns Cm _cancel
779 if the dialog is the sole window of the GUI and therefore named
784 .Cm GtkFileChooserDialog
791 if the dialog is the sole window of the GUI and therefore named
794 .Bl -tag -width "commands "
796 .Qq Ar name Ns Cm :set_filename Ar path
799 to the extent it exists.
801 .Qq Ar name Ns Cm :set_current_name Ar string
804 the suggested filename, which may not yet exist.
806 should either resemble an absolute path, or the
808 must be set separately by
809 .Ar name Ns Cm :set_filename Ar directory .
811 .Qq Ar name Ns Cm :set_title Ar string
812 replaces the text in the title bar with
815 .Qq Ar name Ns Cm :resize Bq Ar width height
816 changes the size of the dialog window to
820 pixels if specified, or to the default size.
822 .Qq Ar name Ns Cm :move Ar x y
823 moves the dialog window to position
826 .Qq Ar name Ns Cm :fullscreen
828 .Qq Ar name Ns Cm :unfullscreen
829 switch fullscreen mode on and off.
831 .Qq Ar name Ns Cm :file Ar pathname
833 .Qq Ar name Ns Cm :folder Ar pathname
835 .Qq Ar name Ns Cm \&:closed
837 .Cm GtkFileChooserDialog
838 window was closed by the window manager.
841 .Bl -tag -width "commands "
843 .Qq Ar name Ns Cm :set_font_name Ar fontname
846 .Qq Ar name Ns Cm \&:font Ar fontname
849 .Bl -tag -width "commands "
851 .Qq Ar name Ns Cm :set_label Ar text
852 replaces the frame label text with
858 .Bl -tag -width "commands "
860 .Qq Ar name Ns Cm :set_from_icon_name Ar icon-name
861 replaces the image with one of the standard icons.
863 .Qq Ar name Ns Cm :set_from_file Ar path
864 replaces the image by the one found at
870 .Bl -tag -width "commands "
872 .Qq Ar name Ns Cm :set_text Ar string
873 replaces the label text with
878 .Ss GtkMenuItem, GtkImageMenuItem
879 .Bl -tag -width "commands "
888 .Ar foo Ns Cm _invoke
892 .Sx GtkFileChooserDialog
896 If there isn't any dialog attached to the
899 .Qq Ar name Ns Cm \&:active Ar label .
902 .Bl -tag -width "commands "
904 .Qq Ar name Ns Cm :set_current_page Ar n
905 switches to zero-based page number
910 .Ss GtkPrintUnixDialog
911 .Bl -tag -width "commands "
913 .Qq Ar name Ns Cm :print Ar file.ps
914 opens the print dialog.
919 to the printer the user selected in the dialog.
921 .Qq Ar name Ns Cm \&:closed
923 .Cm GtkPrintUnixDialog
924 window was closed by the window manager.
927 .Bl -tag -width "commands "
929 .Qq Ar name Ns Cm :set_fraction Ar x
930 moves the progress bar to
932 .Pq between 0 and 1 .
934 .Qq Ar name Ns Cm :set_text Bq Ar string
935 replaces the text of the progress bar with
937 Default is the progress percentage.
942 .Bl -tag -width "commands "
944 .Qq Ar name Ns Cm :set_active 1
945 switches the button on.
946 All other buttons of the same group will go off automatically.
948 .Qq Ar name Ns Cm :set_label Ar string
949 replaces the button text with
952 .Qq Ar name Ns Cm \&:1
954 .Qq Ar name Ns Cm \&:0
958 .Bl -tag -width "commands "
960 .Qq Ar name Ns Cm :set_value Ar x
961 moves the slider to value
964 .Qq Ar name Ns Cm \&:value Ar floating_point_text
966 .Ss GtkScrolledWindow
967 .Bl -tag -width "commands "
969 .Qq Ar name Ns Cm :hscroll Ar position
971 .Qq Ar name Ns Cm :vscroll Ar position
974 to the left or top edge of the
975 .Cm GtkScrolledWindow ,
978 .Qq Ar name Ns Cm :hscroll_to_range Ar pos_0 pos_1
980 .Qq Ar name Ns Cm :vscroll_to_range Ar pos_0 pos_1
981 scroll, if necessary, the range between
986 .Cm GtkScrolledWindow .
987 If the range is greater than the window, the initial part of the range
994 may be unsupported by Glade, but its definition can be inserted
995 manually into the GtkBuilder
998 .Bd -literal -offset indent
1000 <object class="GtkSocket" id="socket1">
1001 <property name="visible">True</property>
1002 <property name="can_focus">True</property>
1005 <property name="expand">True</property>
1006 <property name="fill">True</property>
1007 <property name="position">1</property>
1011 .Bl -tag -width "commands "
1013 .Qq Ar name Ns Cm :id
1014 requests a feedback message containing the socket
1017 .Qq Ar name Ns Cm :id Ar xid
1018 can be used by another process to XEmbed its widgets into the
1021 .Qq Ar name Ns Cm :plug-added ,
1026 Notification that the other process has inserted its widgets into or
1027 removed them from the
1031 .Bl -tag -width "commands "
1033 .Qq Ar name Ns Cm :set_text Ar string
1034 sets the selected value to
1037 .Qq Ar name Ns Cm \&:text Ar text
1040 .Bl -tag -width "commands "
1042 .Qq Ar name Ns Cm :start
1044 .Qq Ar name Ns Cm :stop
1045 start and stop the spinner.
1052 parameter is an arbitrary non-whitespace string.
1053 .Bl -tag -width "commands "
1055 .Qq Ar name Ns Cm :push_id Ar id string ,
1056 .Qq Ar name Ns Cm :push Ar string
1063 respectively, and display it in the statusbar.
1065 .Qq Ar name Ns Cm :pop_id Ar id ,
1066 .Qq Ar name Ns Cm :pop
1067 remove the latest entry associated with context id
1071 respectively, from the statusbar.
1073 .Qq Ar name Ns Cm :remove_all_id Ar id ,
1074 .Qq Ar name Ns Cm :remove_all
1075 remove the entries associated with context id
1079 respectively, from the statusbar.
1084 .Bl -tag -width "commands "
1086 .Qq Ar name Ns Cm :set_active Brq Cm 0 | 1
1087 turns the switch off
1092 .Qq Ar name Ns Cm \&:1
1094 .Qq Ar name Ns Cm \&:0
1098 There should be a dedicated
1100 for sending (parts of) the text.
1108 .Ar foo Ns Cm _send_text
1109 will send the content of the
1114 .Ar foo Ns Cm _send_selection
1115 will send the highlighted part the
1117 .Bl -tag -width "commands "
1119 .Qq Ar name Ns Cm :set_text Ar string
1120 replaces the user-editable text with (potentially empty)
1123 .Qq Ar name Ns Cm :delete
1126 .Qq Ar name Ns Cm :insert_at_cursor Ar string
1131 .Qq Ar name Ns Cm :place_cursor Brq Ar position | Cm end
1132 places the text cursor at
1134 or at the end of the text.
1136 .Qq Ar name Ns Cm :place_cursor_at_line Ar line
1137 places the text cursor at the beginning of
1140 .Qq Ar name Ns Cm :scroll_to_cursor
1141 scrolls to the cursor position if necessary.
1143 .Qq Ar name Ns Cm :save Ar file
1148 command containing the text.
1150 .Qq Ar button_name Ns Cm :text Ar text ,
1152 being the name of the
1158 and backslashes are replaced by
1162 .Bl -tag -width "commands "
1164 .Qq Ar name Ns Cm :set_active Brq Cm 0 | 1
1165 switches the button off
1170 .Qq Ar name Ns Cm :set_label Ar string
1171 replaces the button text with
1174 .Qq Ar name Ns Cm \&:1
1176 .Qq Ar name Ns Cm \&:0
1181 can deal with columns of type
1182 .Cm gboolean , gint , guint , glong , gulong , gint64 , guint64 , gfloat , gdouble ,
1189 refer to the underlying model
1192 .Cm GtkTreeStore ) .
1194 is a sequence of one or more colon-separated integers, e.g.
1198 .Bl -tag -width "commands "
1200 .Qq Ar name Ns Cm :set Ar row column data
1201 replaces the content at
1205 (which should be compatible with the type of
1207 If necessary, new tree nodes are created to obtain the minimal tree
1208 structure needed to support
1211 .Qq Ar name Ns Cm :insert_row Brq Ar row Bo Cm as_child Bc | Cm end
1212 inserts a new, empty row; either as a sibling of
1218 or at the end of the list, respectively.
1220 .Qq Ar name Ns Cm :move_row Ar origin Brq Ar destination | Cm end
1223 within its current level to
1227 .Qq Ar name Ns Cm :remove_row Ar row
1228 removes the row at position
1231 .Qq Ar name Ns Cm :clear
1234 .Qq Ar name Ns Cm :expand Ar row
1235 expands one level of the subtree below
1238 .Qq Ar name Ns Cm :expand_all Bq Ar row
1239 expands the subtree below
1243 .Qq Ar name Ns Cm :collapse Bq Ar row
1244 collapses the subtree below
1248 .Qq Ar name Ns Cm :set_cursor Bq Ar row
1253 .Qq Ar name Ns Cm :scroll Ar row column
1258 .Qq Ar name Ns Cm :save Ar file
1259 stores the content of the underlying model as a sequence of
1264 .Qq Ar name Ns Cm \&:clicked
1266 .Qq Ar name Ns Cm \&: Ns Ar column_type row column value ,
1267 one message per cell in the underlying model for each selected row; or
1269 .Qq Ar name Ns Cm \&: Ns Ar column_type row column new_value ,
1274 .Ss GtkTreeViewColumn
1275 .Bl -tag -width "commands "
1279 .Qq Ar name Ns Cm \&:clicked
1282 .Bl -tag -width "commands "
1284 .Qq Ar name Ns Cm :set_title Ar string
1285 replaces the text in the title bar with
1288 .Qq Ar name Ns Cm :resize Bq Ar width height
1289 changes the window size to
1293 pixels if specified, or to the default size.
1295 .Qq Ar name Ns Cm :move Ar x y
1296 moves the window to position
1299 .Qq Ar name Ns Cm :fullscreen
1301 .Qq Ar name Ns Cm :unfullscreen
1302 switch fullscreen mode on and off.
1304 .Qq Ar name Ns Cm \&:closed
1307 was closed by the window manager.
1312 .Ss Discovering Pipeglade Interactively
1313 Suppose the interface in
1316 .Sx GtkLabel Ql label1
1318 .Sx GtkButton Ql button1 .
1324 .Sx GtkButton , Ql button1:clicked
1325 will be reported on the terminal.
1328 .Dl label1:set_text Button Label
1330 will change the text shown on the label into
1332 .Ss One-Shot File Dialog
1333 Suppose the interface in
1334 .Pa ./simple_open.ui
1336 .Sx GtkFileChooserDialog
1344 .Dl pipeglade -u simple_open.ui
1346 will open the dialog; pressing
1348 will close it after sending the selected filename to
1350 .Ss One-Shot User Notification
1352 .Pa ./simple_dialog.ui
1354 .Sx GtkLabel Ql label1 ,
1356 .Bd -literal -offset indent
1357 pipeglade -u simple_dialog.ui <<< \e
1358 "label1:set_text NOW READ THIS!"
1360 will set the label text accordingly and wait for user input.
1361 .Ss Continuous Input
1362 The following shell command displays a running clock:
1363 .Bd -literal -offset indent
1365 echo "label1:set_text `date`";
1367 done | pipeglade -u simple_dialog.ui
1369 .Ss Continuous Input and Output
1370 The following shell script fragment sets up
1372 for continuous communication with another program,
1374 .Bd -literal -offset indent
1375 pipeglade -i in.fifo -o out.fifo &
1376 # wait for in.fifo and out.fifo to appear
1377 while test ! \e( -e in.fifo -a -e out.fifo \e); do :; done
1378 main_prog <out.fifo >in.fifo
1391 .An Bert Burgemeister
1392 .Aq Mt trebbu@googlemail.com .
1394 Due to what appears to be a bug in cairo v1.14.0,
1396 used with this library version occasionally crashes on