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
33 .Op Fl u Ar builder-file
34 .Op Fl e Ar parent-xid
36 .Op Fl -display Ar X-server
41 is a helper program that displays graphical user
42 interfaces for other programs.
43 It renders the GUI definition found in a GtkBuilder XML file
44 (typically created using the
46 interface designer), and communicates with the main program solely
47 through plain text messages via pipes or fifos.
48 It provides access to a subset of features of a subset of widgets of
50 Simple one-shot dialogs as well as more complex, long-running programs
60 if necessary, and uses it for command input.
62 A command is a line of text.
64 .Qq Ar name Ns Cm \&: Ns Ar action Bq Ar data
67 is the name of the receiving widget;
69 is separated from the rest of the command by a single whitespace
71 Commands whose first non-whitespace character is
73 are considered comments and ignored silently, as are empty input lines.
74 Any occurences of the two-character sequences
78 will be converted into newline or carriage return, respectively.
79 Every other character following a backslash will be left unchanged,
80 but the backslash will be removed.
81 Invalid commands are reported on
83 and are otherwise ignored.
86 for applicable commands.
90 exists but is not a named pipe.
93 is deleted upon successful program termination.
95 Default command input is
100 if necessary, and uses it for output of feedback messages from the
101 graphical user interface.
103 A feedback message is a line of text; its format is
104 .Qq Ar name Ns Cm \&: Ns Ar info Bq Ar data
107 is the name of the sending widget.
110 for possible feedback messages.
114 exists but is not a named pipe.
117 is deleted upon successful program termination.
119 Default feedback-message output is
121 .It Fl u Ar builder-file
122 Displays the graphical user interface
124 which should be created using the
126 user interface designer and saved in GtkBuilder (.ui) format.
127 Widget names should be alphanumeric, including underscores, and the
128 main window must be named
133 .It Fl e Ar parent-xid
134 Embeds the main window into the XEmbed socket
138 For each command, append to
144 is the number of microseconds elapsed during
149 are separated by a tab character.
156 .It Fl -display Ar X-server
159 for user interaction.
161 Prints a help message and exits.
163 Prints the versions of the underlying GTK+ and cairo libraries and
171 The widget classes able to communicate through
178 .Sx GtkComboBoxText ,
184 .Sx GtkFileChooserButton ,
185 .Sx GtkFileChooserDialog ,
190 .Sx GtkMenuItem, GtkImageMenuItem ,
192 .Sx GtkPrintUnixDialog ,
196 .Sx GtkScrolledWindow
203 .Sx GtkToggleButton ,
205 .Sx GtkTreeViewColumn ,
210 references a widget by the
212 it is given in Glade.
217 is represented by the
219 attribute of the referenced object; therefore, a
226 .Dl <object class="GtkWindow" id="foo"> .
227 .Ss Any Widget (including widgets not mentioned above)
228 .Bl -tag -width "commands "
230 .Qq Ar name Ns Cm :set_sensitive Brq Cm 0 | 1
231 makes the widget grayed out
236 .Qq Ar name Ns Cm :set_visible Brq Cm 0 | 1
239 the widget, or makes it visible
242 .Qq Ar name Ns Cm :grab_focus
243 puts the keyboard focus onto the widget, if possible.
245 .Qq Ar name Ns Cm :set_size_request Bq Ar width height
246 sets the widget's minimum size to
250 Default is the widget's natural size.
253 .Ar name Ns Cm :style
254 .Bo Ar prop Ns Cm \&: Ns Ar val Ns Bo Cm \&; Ar prop Ns Cm \&: Ns Ar val ... Bc Bc
258 of the widget style to
260 Properties not explicitly specified are reset to their default values.
262 .Bl -dash -offset indent -compact
264 .Ql label1:style font:Bold 11; background-color:green
266 .Ql label1:style font-style:italic; font-weight:bold; color:blue
268 .Ql frame1:style border-color:red yellow; border-width:5px
270 .Ql frame1:style border-radius:10px; transition:10s
272 For a description of possible color notations see
275 .Qq Ar name Ns Cm :set_tooltip_text Bq Ar text
276 sets the widget's tooltip
278 Default is disabling the tooltip.
280 .Qq Ar name Ns Cm :force
281 simulates a click on the
283 d widget, triggering a response as described with the widgets below.
285 .Bl -dash -offset indent -compact
287 The command is ignored by
295 .Sx GtkTreeViewColumn ;
297 .Sx GtkCalendar , GtkEntry , GtkFileChooserButton , GtkScale ,
300 report the currently selected item;
305 just open their respective dialogs.
308 .Qq Ar name Ns Cm :load Ar file
315 is required but ignored.
317 commands may be nested but on attempts to read from the same file, the
328 .Qq Ar name Ns Cm :main_quit
329 kills the user interface.
332 is required but ignored.
335 .Bl -tag -width "commands "
337 .Qq Ar name Ns Cm :set_label Ar string
338 replaces the button text with
341 .Qq Ar name Ns Cm \&:clicked
344 s with names ending in
345 .Cm _ok , _apply , _cancel , _send_text ,
348 may work differently; see
349 .Sx GtkDialog , GtkFileChooserDialog ,
355 .Bl -tag -width "commands "
357 .Qq Ar name Ns Cm :select_date Ar yyyy Ns Cm - Ns Ar mm Ns Cm - Ns Ar dd
358 selects the date on the calendar.
360 .Qq Ar name Ns Cm :mark_day Ar day
365 .Qq Ar name Ns Cm :clear_marks
366 unmarks all days on the calendar.
368 .Qq Ar name Ns Cm \&:clicked Ar yyyy Ns Cm - Ns Ar mm Ns Cm - Ns Ar dd
370 .Qq Ar name Ns Cm \&:doubleclicked Ar yyyy Ns Cm - Ns Ar mm Ns Cm - Ns Ar dd
373 .Bl -tag -width "commands "
375 .Qq Ar name Ns Cm :set_active Brq Cm 0 | 1
376 switches the check mark off
381 .Qq Ar name Ns Cm :set_label Ar string
382 replaces the button text with
385 .Qq Ar name Ns Cm \&:1
387 .Qq Ar name Ns Cm \&:0
391 .Bl -tag -width "commands "
393 .Qq Ar name Ns Cm :set_color Ar color
394 preselects the color.
397 .Bl -dash -offset indent -compact
399 a standard X11 color name, like
402 a hexadecimal value in the form
403 .Cm # Ns Ar rgb , Cm # Ns Ar rrggbb , Cm # Ns Ar rrrgggbbb ,
405 .Cm # Ns Ar rrrrggggbbbb ,
407 an RGB color in the form
408 .Cm rgb( Ns Ar red Ns Cm \&, Ns Ar green Ns Cm \&, Ns Ar blue Ns Cm \&) ,
411 an RGBA color in the form
412 .Cm rgba( Ns Ar red Ns Cm \&, Ns Ar green Ns Cm \&, Ns
413 .Ar blue Ns Cm \&, Ns Ar alpha Ns Cm \&) .
416 .Qq Ar name Ns Cm \&:color Cm rgb( Ns Ar red Ns Cm \&, Ns Ar green Ns Cm \&, Ns Ar blue Ns Cm \&)
418 .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 \&) .
422 lie between 0 and 255, and
431 .Bl -tag -width "commands "
433 .Qq Ar name Ns Cm :prepend_text Ar string
435 .Qq Ar name Ns Cm :append_text Ar string
436 prepend/append a new selectable item marked
439 .Qq Ar name Ns Cm :insert_text Ar position string
445 .Qq Ar name Ns Cm :remove Ar position
449 .Qq Ar entry_name Ns Cm \&:text Ar text ,
451 being the name of the child
464 .Ar foo Ns Cm _invoke .
472 .Ar foo Ns Cm _cancel
474 if the dialog is the sole window of the GUI and therefore named
485 it will take care of hiding the dialog window.
486 .Bl -tag -width "commands "
488 .Qq Ar name Ns Cm :set_title Ar string
489 replaces the text in the title bar with
492 .Qq Ar name Ns Cm :resize Bq Ar width height
493 changes the size of the dialog window to
497 pixels if specified, or to the default size.
499 .Qq Ar name Ns Cm :move Ar x y
500 moves the dialog window to position
503 .Qq Ar name Ns Cm :fullscreen
505 .Qq Ar name Ns Cm :unfullscreen
506 switch fullscreen mode on and off.
508 .Qq Ar name Ns Cm \&:closed
511 window was closed by the window manager.
514 Most drawing commands expect an
516 parameter (an arbitrary non-negative integer) which can be used to
517 reference the command for later removal.
519 All coordinates refer to a left-handed coordinate system with its
520 origin in the upper-left corner.
521 .Bl -tag -width "commands "
523 .Qq Ar name Ns Cm :arc Ar id x y radius angle1 angle2
524 adds a circular arc to the current path.
525 The arc is centered at
527 and proceeds clockwise from
535 .Qq Ar name Ns Cm :arc_negative Ar id x y radius angle1 angle2
536 adds a circular arc to the current path.
537 The arc is centered at
539 and proceeds counterclockwise from
547 .Qq Ar name Ns Cm :close_path Ar id
548 adds a line segment from the current point to the point most recently
550 .Ar name Ns Cm :move_to
552 .Ar name Ns Cm :rel_move_to .
554 .Qq Ar name Ns Cm :curve_to Ar id x1 y1 x2 y2 x3 y3
555 adds a cubic Bezier spline from the current point to
563 .Qq Ar name Ns Cm :fill Ar id
564 fills the current path and clears it.
566 .Qq Ar name Ns Cm :fill_preserve Ar id
567 fills the current path without clearing it.
569 .Qq Ar name Ns Cm :line_to Ar id x y
570 adds a line from the current point to
573 .Qq Ar name Ns Cm :move_to Ar id x y
574 sets the current point to
577 .Qq Ar name Ns Cm :rectangle Ar id x y width height
578 adds a rectangle to the current path.
579 The top left corner is at
582 .Qq Ar name Ns Cm :refresh
587 .Qq Ar name Ns Cm :rel_curve_to Ar id dx1 dy1 dx2 dy2 dx3 dy3
588 adds a cubic Bezier spline from the current point to
595 All coordinates are offsets relative to the current point.
597 .Qq Ar name Ns Cm :rel_line_to Ar id dx dy
598 adds a line from the current point to a point offset from there by
601 .Qq Ar name Ns Cm :rel_move_to Ar id dx dy
602 moves the current point by
605 .Qq Ar name Ns Cm :remove Ar id
606 removes the elements with
609 .Cm GtkDrawingArea Ar name .
611 .Qq Ar name Ns Cm :set_dash Ar id l
612 sets the dash pattern to
618 .Qq Ar name Ns Cm :set_dash Ar id l1on l1off l2on l2off ...
619 resets the dash pattern to a line with arbitrary on/off portions.
621 .Qq Ar name Ns Cm :set_dash Ar id
622 resets the dash pattern to a solid line.
624 .Qq Ar name Ns Cm :set_font_size Ar id size
625 sets the font size for subsequent calls of
626 .Ar name Ns Cm :show_text .
628 .Qq Ar name Ns Cm :set_line_cap Ar id Brq Cm butt | round | square
629 sets the line cap style.
631 .Qq Ar name Ns Cm :set_line_join Ar id Brq Cm miter | round | bevel
632 sets the line junction style.
634 .Qq Ar name Ns Cm :set_line_width Ar id width
637 .Qq Ar name Ns Cm :set_source_rgba Ar id color
640 is in the format used with
643 .Qq Ar name Ns Cm :show_text Ar id text
646 beginning at the current point.
648 .Qq Ar name Ns Cm :stroke Ar id
649 strokes the current path and clears it.
651 .Qq Ar name Ns Cm :stroke_preserve Ar id
652 strokes the current path without clearing it.
657 .Bl -tag -width "commands "
659 .Qq Ar name Ns Cm :set_text Ar string
660 replaces the user-editable text with
663 .Qq Ar name Ns Cm :set_placeholder_text Ar string
666 that is displayed when the entry is empty and unfocused.
668 .Qq Ar name Ns Cm \&:text Ar text ,
669 once for each change of
674 are mouse pointer coordinates relative to the
676 .Bl -tag -width "commands "
680 .Qq Ar name Ns Cm \&:button_press Ar b x y ,
681 .Qq Ar name Ns Cm \&:button_release Ar b x y
684 is the mouse button (normally 1, 2, or 3 for the left, middle, and
685 right button; others may exist).
687 .Qq Ar name Ns Cm \&:motion Ar x y
688 is reported repeatedly while the mouse is being moved with a button
691 .Qq Ar name Ns Cm \&:key_press Ar key ,
701 .Bl -tag -width "commands "
703 .Qq Ar name Ns Cm :set_label Ar string
704 replaces the expander label text with
707 .Qq Ar name Ns Cm :set_expanded Brq Cm 0 | 1
710 the child widget, or makes it visible
715 .Ss GtkFileChooserButton
716 .Bl -tag -width "commands "
718 .Qq Ar name Ns Cm :set_filename Ar path
721 to the extent it exists.
723 .Qq Ar name Ns Cm \&:file Ar pathname
724 if the selection has changed.
726 .Ss GtkFileChooserDialog
728 .Cm GtkFileChooserDialog
736 .Ar foo Ns Cm _invoke .
739 .Cm GtkFileChooserDialog
746 if the dialog is the sole window of the GUI and therefore named
751 .Cm GtkFileChooserDialog
756 .Ar foo Ns Cm _cancel
758 if the dialog is the sole window of the GUI and therefore named
763 .Cm GtkFileChooserDialog
770 if the dialog is the sole window of the GUI and therefore named
773 .Bl -tag -width "commands "
775 .Qq Ar name Ns Cm :set_filename Ar path
778 to the extent it exists.
780 .Qq Ar name Ns Cm :set_current_name Ar string
783 the suggested filename, which may not yet exist.
785 should either resemble an absolute path, or the
787 must be set separately by
788 .Ar name Ns Cm :set_filename Ar directory .
790 .Qq Ar name Ns Cm :set_title Ar string
791 replaces the text in the title bar with
794 .Qq Ar name Ns Cm :resize Bq Ar width height
795 changes the size of the dialog window to
799 pixels if specified, or to the default size.
801 .Qq Ar name Ns Cm :move Ar x y
802 moves the dialog window to position
805 .Qq Ar name Ns Cm :fullscreen
807 .Qq Ar name Ns Cm :unfullscreen
808 switch fullscreen mode on and off.
810 .Qq Ar name Ns Cm :file Ar pathname
812 .Qq Ar name Ns Cm :folder Ar pathname
814 .Qq Ar name Ns Cm \&:closed
816 .Cm GtkFileChooserDialog
817 window was closed by the window manager.
820 .Bl -tag -width "commands "
822 .Qq Ar name Ns Cm :set_font_name Ar fontname
825 .Qq Ar name Ns Cm \&:font Ar fontname
828 .Bl -tag -width "commands "
830 .Qq Ar name Ns Cm :set_label Ar text
831 replaces the frame label text with
837 .Bl -tag -width "commands "
839 .Qq Ar name Ns Cm :set_from_icon_name Ar icon-name
840 replaces the image with one of the standard icons.
842 .Qq Ar name Ns Cm :set_from_file Ar path
843 replaces the image by the one found at
849 .Bl -tag -width "commands "
851 .Qq Ar name Ns Cm :set_text Ar string
852 replaces the label text with
857 .Ss GtkMenuItem, GtkImageMenuItem
858 .Bl -tag -width "commands "
867 .Ar foo Ns Cm _invoke
871 .Sx GtkFileChooserDialog
875 If there isn't any dialog attached to the
878 .Qq Ar name Ns Cm \&:active Ar label .
881 .Bl -tag -width "commands "
883 .Qq Ar name Ns Cm :set_current_page Ar n
884 switches to zero-based page number
889 .Ss GtkPrintUnixDialog
890 .Bl -tag -width "commands "
892 .Qq Ar name Ns Cm :print Ar file.ps
893 opens the print dialog.
898 to the printer the user selected in the dialog.
900 .Qq Ar name Ns Cm \&:closed
902 .Cm GtkPrintUnixDialog
903 window was closed by the window manager.
906 .Bl -tag -width "commands "
908 .Qq Ar name Ns Cm :set_fraction Ar x
909 moves the progress bar to
911 .Pq between 0 and 1 .
913 .Qq Ar name Ns Cm :set_text Bq Ar string
914 replaces the text of the progress bar with
916 Default is the progress percentage.
921 .Bl -tag -width "commands "
923 .Qq Ar name Ns Cm :set_active 1
924 switches the button on.
925 All other buttons of the same group will go off automatically.
927 .Qq Ar name Ns Cm :set_label Ar string
928 replaces the button text with
931 .Qq Ar name Ns Cm \&:1
933 .Qq Ar name Ns Cm \&:0
937 .Bl -tag -width "commands "
939 .Qq Ar name Ns Cm :set_value Ar x
940 moves the slider to value
943 .Qq Ar name Ns Cm \&:value Ar floating_point_text
945 .Ss GtkScrolledWindow
946 .Bl -tag -width "commands "
948 .Qq Ar name Ns Cm :hscroll Ar position
950 .Qq Ar name Ns Cm :vscroll Ar position
953 to the left or top edge of the
954 .Cm GtkScrolledWindow ,
957 .Qq Ar name Ns Cm :hscroll_to_range Ar pos_0 pos_1
959 .Qq Ar name Ns Cm :vscroll_to_range Ar pos_0 pos_1
960 scroll, if necessary, the range between
965 .Cm GtkScrolledWindow .
966 If the range is greater than the window, the initial part of the range
973 may be unsupported by Glade, but its definition can be inserted
974 manually into the GtkBuilder
977 .Bd -literal -offset indent
979 <object class="GtkSocket" id="socket1">
980 <property name="visible">True</property>
981 <property name="can_focus">True</property>
984 <property name="expand">True</property>
985 <property name="fill">True</property>
986 <property name="position">1</property>
990 .Bl -tag -width "commands "
992 .Qq Ar name Ns Cm :id
993 requests a feedback message containing the socket
996 .Qq Ar name Ns Cm :id Ar xid
997 can be used by another process to XEmbed its widgets into the
1000 .Qq Ar name Ns Cm :plug-added ,
1005 Notification that the other process has inserted its widgets into or
1006 removed them from the
1010 .Bl -tag -width "commands "
1012 .Qq Ar name Ns Cm :set_text Ar string
1013 sets the selected value to
1016 .Qq Ar name Ns Cm \&:text Ar text
1019 .Bl -tag -width "commands "
1021 .Qq Ar name Ns Cm :start
1023 .Qq Ar name Ns Cm :stop
1024 start and stop the spinner.
1031 parameter is an arbitrary non-whitespace string.
1032 .Bl -tag -width "commands "
1034 .Qq Ar name Ns Cm :push_id Ar id string ,
1035 .Qq Ar name Ns Cm :push Ar string
1042 respectively, and display it in the statusbar.
1044 .Qq Ar name Ns Cm :pop_id Ar id ,
1045 .Qq Ar name Ns Cm :pop
1046 remove the latest entry associated with context id
1050 respectively, from the statusbar.
1052 .Qq Ar name Ns Cm :remove_all_id Ar id ,
1053 .Qq Ar name Ns Cm :remove_all
1054 remove the entries associated with context id
1058 respectively, from the statusbar.
1063 .Bl -tag -width "commands "
1065 .Qq Ar name Ns Cm :set_active Brq Cm 0 | 1
1066 turns the switch off
1071 .Qq Ar name Ns Cm \&:1
1073 .Qq Ar name Ns Cm \&:0
1077 There should be a dedicated
1079 for sending (parts of) the text.
1087 .Ar foo Ns Cm _send_text
1088 will send the content of the
1093 .Ar foo Ns Cm _send_selection
1094 will send the highlighted part the
1096 .Bl -tag -width "commands "
1098 .Qq Ar name Ns Cm :set_text Ar string
1099 replaces the user-editable text with (potentially empty)
1102 .Qq Ar name Ns Cm :delete
1105 .Qq Ar name Ns Cm :insert_at_cursor Ar string
1110 .Qq Ar name Ns Cm :place_cursor Brq Ar position | Cm end
1111 places the text cursor at
1113 or at the end of the text.
1115 .Qq Ar name Ns Cm :place_cursor_at_line Ar line
1116 places the text cursor at the beginning of
1119 .Qq Ar name Ns Cm :scroll_to_cursor
1120 scrolls to the cursor position if necessary.
1122 .Qq Ar name Ns Cm :save Ar file
1127 command containing the text.
1129 .Qq Ar button_name Ns Cm :text Ar text ,
1131 being the name of the
1137 and backslashes are replaced by
1141 .Bl -tag -width "commands "
1143 .Qq Ar name Ns Cm :set_active Brq Cm 0 | 1
1144 switches the button off
1149 .Qq Ar name Ns Cm :set_label Ar string
1150 replaces the button text with
1153 .Qq Ar name Ns Cm \&:1
1155 .Qq Ar name Ns Cm \&:0
1160 can deal with columns of type
1161 .Cm gboolean , gint , guint , glong , gulong , gint64 , guint64 , gfloat , gdouble ,
1168 refer to the underlying model
1171 .Cm GtkTreeStore ) .
1173 is a sequence of one or more colon-separated integers, e.g.
1177 .Bl -tag -width "commands "
1179 .Qq Ar name Ns Cm :set Ar row column data
1180 replaces the content at
1184 (which should be compatible with the type of
1186 If necessary, new tree nodes are created to obtain the minimal tree
1187 structure needed to support
1190 .Qq Ar name Ns Cm :insert_row Brq Ar row Bo Cm as_child Bc | Cm end
1191 inserts a new, empty row; either as a sibling of
1197 or at the end of the list, respectively.
1199 .Qq Ar name Ns Cm :move_row Ar origin Brq Ar destination | Cm end
1202 within its current level to
1206 .Qq Ar name Ns Cm :remove_row Ar row
1207 removes the row at position
1210 .Qq Ar name Ns Cm :clear
1213 .Qq Ar name Ns Cm :expand Ar row
1214 expands one level of the subtree below
1217 .Qq Ar name Ns Cm :expand_all Bq Ar row
1218 expands the subtree below
1222 .Qq Ar name Ns Cm :collapse Bq Ar row
1223 collapses the subtree below
1227 .Qq Ar name Ns Cm :set_cursor Bq Ar row
1232 .Qq Ar name Ns Cm :scroll Ar row column
1237 .Qq Ar name Ns Cm :save Ar file
1238 stores the content of the underlying model as a sequence of
1243 .Qq Ar name Ns Cm \&:clicked
1245 .Qq Ar name Ns Cm \&: Ns Ar column_type row column value ,
1246 one message per cell in the underlying model for each selected row; or
1248 .Qq Ar name Ns Cm \&: Ns Ar column_type row column new_value ,
1253 .Ss GtkTreeViewColumn
1254 .Bl -tag -width "commands "
1258 .Qq Ar name Ns Cm \&:clicked
1261 .Bl -tag -width "commands "
1263 .Qq Ar name Ns Cm :set_title Ar string
1264 replaces the text in the title bar with
1267 .Qq Ar name Ns Cm :resize Bq Ar width height
1268 changes the window size to
1272 pixels if specified, or to the default size.
1274 .Qq Ar name Ns Cm :move Ar x y
1275 moves the window to position
1278 .Qq Ar name Ns Cm :fullscreen
1280 .Qq Ar name Ns Cm :unfullscreen
1281 switch fullscreen mode on and off.
1283 .Qq Ar name Ns Cm \&:closed
1286 was closed by the window manager.
1291 .Ss Discovering Pipeglade Interactively
1292 Suppose the interface in
1295 .Sx GtkLabel Ql label1
1297 .Sx GtkButton Ql button1 .
1303 .Sx GtkButton , Ql button1:clicked
1304 will be reported on the terminal.
1307 .Dl label1:set_text Button Label
1309 will change the text shown on the label into
1311 .Ss One-Shot File Dialog
1312 Suppose the interface in
1313 .Pa ./simple_open.ui
1315 .Sx GtkFileChooserDialog
1323 .Dl pipeglade -u simple_open.ui
1325 will open the dialog; pressing
1327 will close it after sending the selected filename to
1329 .Ss One-Shot User Notification
1331 .Pa ./simple_dialog.ui
1333 .Sx GtkLabel Ql label1 ,
1335 .Bd -literal -offset indent
1336 pipeglade -u simple_dialog.ui <<< \e
1337 "label1:set_text NOW READ THIS!"
1339 will set the label text accordingly and wait for user input.
1340 .Ss Continuous Input
1341 The following shell command displays a running clock:
1342 .Bd -literal -offset indent
1344 echo "label1:set_text `date`";
1346 done | pipeglade -u simple_dialog.ui
1348 .Ss Continuous Input and Output
1349 The following shell script fragment sets up
1351 for continuous communication with another program,
1353 .Bd -literal -offset indent
1354 pipeglade -i in.fifo -o out.fifo &
1355 # wait for in.fifo and out.fifo to appear
1356 while test ! \e( -e in.fifo -a -e out.fifo \e); do :; done
1357 main_prog <out.fifo >in.fifo
1370 .An Bert Burgemeister
1371 .Aq Mt trebbu@googlemail.com .
1373 Due to what appears to be a bug in cairo v1.14.0,
1375 used with this library version occasionally crashes on