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 id Ns Cm \&: Ns Ar action Bq Ar data ,
68 being 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 id Ns Cm \&: Ns Ar info Bq Ar data ,
107 being 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
124 in the background after printing its process ID to
127 It is an error if option
134 .It Fl u Ar builder-file
135 Displays the graphical user interface
137 which should be created using the
139 user interface designer and saved in GtkBuilder (.ui) format.
140 Widget ids should be alphanumeric, including underscores, and the
141 main window must must be given the id
146 .It Fl e Ar parent-xid
147 Embeds the main window into the XEmbed socket
151 For each command, append to
157 is the number of microseconds elapsed during
162 are separated by a tab character.
174 .It Fl -display Ar X-server
177 for user interaction.
179 Prints a help message and exits.
181 Prints the versions of the underlying GTK+ and cairo libraries and
189 The widget classes able to communicate through
196 .Sx GtkComboBoxText ,
202 .Sx GtkFileChooserButton ,
203 .Sx GtkFileChooserDialog ,
208 .Sx GtkMenuItem, GtkImageMenuItem ,
210 .Sx GtkPrintUnixDialog ,
214 .Sx GtkScrolledWindow
221 .Sx GtkToggleButton ,
223 .Sx GtkTreeViewColumn ,
228 references a widget by the
230 attribute it is given in Glade.
238 .Dl <object class="GtkWindow" id="foo"> .
239 .Ss Any Widget (including widgets not mentioned above)
240 .Bl -tag -width "commands "
242 .Qq Ar id Ns Cm :set_sensitive Brq Cm 0 | 1
243 makes the widget grayed out
248 .Qq Ar id Ns Cm :set_visible Brq Cm 0 | 1
251 the widget, or makes it visible
254 .Qq Ar id Ns Cm :grab_focus
255 puts the keyboard focus onto the widget, if possible.
257 .Qq Ar id Ns Cm :set_size_request Bq Ar width height
258 sets the widget's minimum size to
262 Default is the widget's natural size.
266 .Bo Ar prop Ns Cm \&: Ns Ar val Ns Bo Cm \&; Ar prop Ns Cm \&: Ns Ar val ... Bc Bc
270 of the widget style to
272 Properties not explicitly specified are reset to their default values.
274 .Bl -dash -offset indent -compact
276 .Ql label1:style font:Bold 11; background-color:green
278 .Ql label1:style font-style:italic; font-weight:bold; color:blue
280 .Ql frame1:style border-color:red yellow; border-width:5px
282 .Ql frame1:style border-radius:10px; transition:10s
284 For a description of possible color notations see
287 .Qq Ar id Ns Cm :set_tooltip_text Bq Ar text
288 sets the widget's tooltip
290 Default is disabling the tooltip.
292 .Qq Ar id Ns Cm :force
293 simulates a click on widget
295 triggering a response as described with the widgets below.
297 .Bl -dash -offset indent -compact
299 The command is ignored by
307 .Sx GtkTreeViewColumn ;
309 .Sx GtkCalendar , GtkEntry , GtkFileChooserButton , GtkScale ,
312 report the currently selected item;
317 just open their respective dialogs.
320 .Qq Ar id Ns Cm :load Ar file
327 is required but ignored.
329 commands may be nested but on attempts to read from the same file, the
340 .Qq Ar id Ns Cm :main_quit
341 kills the user interface.
344 is required but ignored.
347 .Bl -tag -width "commands "
349 .Qq Ar id Ns Cm :set_label Ar string
350 replaces the button text with
353 .Qq Ar id Ns Cm \&:clicked
357 .Cm _ok , _apply , _cancel , _send_text ,
360 may work differently; see
361 .Sx GtkDialog , GtkFileChooserDialog ,
367 .Bl -tag -width "commands "
369 .Qq Ar id Ns Cm :select_date Ar yyyy Ns Cm - Ns Ar mm Ns Cm - Ns Ar dd
370 selects the date on the calendar.
372 .Qq Ar id Ns Cm :mark_day Ar day
377 .Qq Ar id Ns Cm :clear_marks
378 unmarks all days on the calendar.
380 .Qq Ar id Ns Cm \&:clicked Ar yyyy Ns Cm - Ns Ar mm Ns Cm - Ns Ar dd
382 .Qq Ar id Ns Cm \&:doubleclicked Ar yyyy Ns Cm - Ns Ar mm Ns Cm - Ns Ar dd
385 .Bl -tag -width "commands "
387 .Qq Ar id Ns Cm :set_active Brq Cm 0 | 1
388 switches the check mark off
393 .Qq Ar id Ns Cm :set_label Ar string
394 replaces the button text with
403 .Bl -tag -width "commands "
405 .Qq Ar id Ns Cm :set_color Ar color
406 preselects the color.
409 .Bl -dash -offset indent -compact
411 a standard X11 color name, like
414 a hexadecimal value in the form
415 .Cm # Ns Ar rgb , Cm # Ns Ar rrggbb , Cm # Ns Ar rrrgggbbb ,
417 .Cm # Ns Ar rrrrggggbbbb ,
419 an RGB color in the form
420 .Cm rgb( Ns Ar red Ns Cm \&, Ns Ar green Ns Cm \&, Ns Ar blue Ns Cm \&) ,
423 an RGBA color in the form
424 .Cm rgba( Ns Ar red Ns Cm \&, Ns Ar green Ns Cm \&, Ns
425 .Ar blue Ns Cm \&, Ns Ar alpha Ns Cm \&) .
428 .Qq Ar id Ns Cm \&:color Cm rgb( Ns Ar red Ns Cm \&, Ns Ar green Ns Cm \&, Ns Ar blue Ns Cm \&)
430 .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 \&) .
434 lie between 0 and 255, and
443 .Bl -tag -width "commands "
445 .Qq Ar id Ns Cm :prepend_text Ar string
447 .Qq Ar id Ns Cm :append_text Ar string
448 prepend/append a new selectable item marked
451 .Qq Ar id Ns Cm :insert_text Ar position string
457 .Qq Ar id Ns Cm :remove Ar position
461 .Qq Ar entry_id Ns Cm \&:text Ar text ,
463 being the id of the child
476 .Ar foo Ns Cm _invoke .
484 .Ar foo Ns Cm _cancel
486 if the dialog is the sole window of the GUI and therefore named
497 it will take care of hiding the dialog window.
498 .Bl -tag -width "commands "
500 .Qq Ar id Ns Cm :set_title Ar string
501 replaces the text in the title bar with
504 .Qq Ar id Ns Cm :resize Bq Ar width height
505 changes the size of the dialog window to
509 pixels if specified, or to the default size.
511 .Qq Ar id Ns Cm :move Ar x y
512 moves the dialog window to position
515 .Qq Ar id Ns Cm :fullscreen
517 .Qq Ar id Ns Cm :unfullscreen
518 switch fullscreen mode on and off.
520 .Qq Ar id Ns Cm \&:closed
523 window was closed by the window manager.
526 Most drawing commands expect an
528 parameter (an arbitrary non-negative integer) which can be used to
529 reference the command for later removal.
531 All coordinates refer to a left-handed coordinate system with its
532 origin in the upper-left corner.
533 .Bl -tag -width "commands "
535 .Qq Ar id Ns Cm :arc 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 clockwise from
547 .Qq Ar id Ns Cm :arc_negative Ar id x y radius angle1 angle2
548 adds a circular arc to the current path.
549 The arc is centered at
551 and proceeds counterclockwise from
559 .Qq Ar id Ns Cm :close_path Ar id
560 adds a line segment from the current point to the point most recently
562 .Ar id Ns Cm :move_to
564 .Ar id Ns Cm :rel_move_to .
566 .Qq Ar id Ns Cm :curve_to Ar id x1 y1 x2 y2 x3 y3
567 adds a cubic Bezier spline from the current point to
574 If there is no current point, the curve will start at
577 .Qq Ar id Ns Cm :fill Ar id
578 fills the current path and clears it.
580 .Qq Ar id Ns Cm :fill_preserve Ar id
581 fills the current path without clearing it.
583 .Qq Ar id Ns Cm :line_to Ar id x y
584 adds a line from the current point to
586 or creates a new current point at
589 .Qq Ar id Ns Cm :move_to Ar id x y
590 sets the current point to
593 .Qq Ar id Ns Cm :rectangle Ar id x y width height
594 adds a rectangle to the current path.
595 The top left corner is at
598 .Qq Ar id Ns Cm :rel_curve_to Ar id dx1 dy1 dx2 dy2 dx3 dy3
599 adds a cubic Bezier spline from the current point to
606 All coordinates are offsets relative to the current point.
608 .Qq Ar id Ns Cm :rel_line_to Ar id dx dy
609 adds a line from the current point to a point offset from there by
612 .Qo Ar id Ns Cm :rel_move_for Ar id Brq Cm c | e | n | ne | nw | s | se | sw | w
615 moves the current point such that
616 .Qq Ar id Ns Cm :show_text Ar id text
617 will place the specified reference point of
619 on the original current point.
621 .Qq Ar id Ns Cm :rel_move_to Ar id dx dy
622 moves the current point by
625 .Qq Ar id Ns Cm :remove Ar id
626 removes the elements with
629 .Cm GtkDrawingArea Ar id .
631 .Qq Ar id Ns Cm :set_dash Ar id l
632 sets the dash pattern to
638 .Qq Ar id Ns Cm :set_dash Ar id l1on l1off l2on l2off ...
639 resets the dash pattern to a line with arbitrary on/off portions.
641 .Qq Ar id Ns Cm :set_dash Ar id
642 resets the dash pattern to a solid line.
644 .Qo Ar id Ns Cm :set_font_family Ar id Brq Cm normal | italic | oblique
645 .Brq Cm normal | bold
648 sets the font face for subsequent calls of
649 .Ar id Ns Cm :show_text .
651 .Qq Ar id Ns Cm :set_font_size Ar id size
652 sets the font size for subsequent calls of
653 .Ar id Ns Cm :show_text .
655 .Qq Ar id Ns Cm :set_line_cap Ar id Brq Cm butt | round | square
656 sets the line cap style.
658 .Qq Ar id Ns Cm :set_line_join Ar id Brq Cm miter | round | bevel
659 sets the line junction style.
661 .Qq Ar id Ns Cm :set_line_width Ar id width
664 .Qq Ar id Ns Cm :set_source_rgba Ar id color
667 is in the format used with
670 .Qq Ar id Ns Cm :show_text Ar id text
673 beginning at the current point.
675 .Qq Ar id Ns Cm :stroke Ar id
676 strokes the current path and clears it.
678 .Qq Ar id Ns Cm :stroke_preserve Ar id
679 strokes the current path without clearing it.
684 .Bl -tag -width "commands "
686 .Qq Ar id Ns Cm :set_text Ar string
687 replaces the user-editable text with
690 .Qq Ar id Ns Cm :set_placeholder_text Ar string
693 that is displayed when the entry is empty and unfocused.
695 .Qq Ar id Ns Cm \&:text Ar text ,
696 once for each change of
701 are mouse pointer coordinates relative to the
703 .Bl -tag -width "commands "
707 .Qq Ar id Ns Cm \&:button_press Ar b x y ,
708 .Qq Ar id Ns Cm \&:button_release Ar b x y
711 is the mouse button (normally 1, 2, or 3 for the left, middle, and
712 right button; others may exist).
714 .Qq Ar id Ns Cm \&:motion Ar x y
715 is reported repeatedly while the mouse is being moved with a button
718 .Qq Ar id Ns Cm \&:key_press Ar key ,
728 .Bl -tag -width "commands "
730 .Qq Ar id Ns Cm :set_label Ar string
731 replaces the expander label text with
734 .Qq Ar id Ns Cm :set_expanded Brq Cm 0 | 1
737 the child widget, or makes it visible
742 .Ss GtkFileChooserButton
743 .Bl -tag -width "commands "
745 .Qq Ar id Ns Cm :set_filename Ar path
748 to the extent it exists.
750 .Qq Ar id Ns Cm \&:file Ar pathname
751 if the selection has changed.
753 .Ss GtkFileChooserDialog
755 .Cm GtkFileChooserDialog
763 .Ar foo Ns Cm _invoke .
766 .Cm GtkFileChooserDialog
773 if the dialog is the sole window of the GUI and therefore named
778 .Cm GtkFileChooserDialog
783 .Ar foo Ns Cm _cancel
785 if the dialog is the sole window of the GUI and therefore named
790 .Cm GtkFileChooserDialog
797 if the dialog is the sole window of the GUI and therefore named
800 .Bl -tag -width "commands "
802 .Qq Ar id Ns Cm :set_filename Ar path
805 to the extent it exists.
807 .Qq Ar id Ns Cm :set_current_name Ar string
810 the suggested filename, which may not yet exist.
812 should either resemble an absolute path, or the
814 must be set separately by
815 .Ar id Ns Cm :set_filename Ar directory .
817 .Qq Ar id Ns Cm :set_title Ar string
818 replaces the text in the title bar with
821 .Qq Ar id Ns Cm :resize Bq Ar width height
822 changes the size of the dialog window to
826 pixels if specified, or to the default size.
828 .Qq Ar id Ns Cm :move Ar x y
829 moves the dialog window to position
832 .Qq Ar id Ns Cm :fullscreen
834 .Qq Ar id Ns Cm :unfullscreen
835 switch fullscreen mode on and off.
837 .Qq Ar id Ns Cm :file Ar pathname
839 .Qq Ar id Ns Cm :folder Ar pathname
841 .Qq Ar id Ns Cm \&:closed
843 .Cm GtkFileChooserDialog
844 window was closed by the window manager.
847 .Bl -tag -width "commands "
849 .Qq Ar id Ns Cm :set_font_name Ar fontname
852 .Qq Ar id Ns Cm \&:font Ar fontname
855 .Bl -tag -width "commands "
857 .Qq Ar id Ns Cm :set_label Ar text
858 replaces the frame label text with
864 .Bl -tag -width "commands "
866 .Qq Ar id Ns Cm :set_from_icon_name Ar icon-name
867 replaces the image with one of the standard icons.
869 .Qq Ar id Ns Cm :set_from_file Ar path
870 replaces the image by the one found at
876 .Bl -tag -width "commands "
878 .Qq Ar id Ns Cm :set_text Ar string
879 replaces the label text with
884 .Ss GtkMenuItem, GtkImageMenuItem
885 .Bl -tag -width "commands "
894 .Ar foo Ns Cm _invoke
898 .Sx GtkFileChooserDialog
902 If there isn't any dialog attached to the
905 .Qq Ar id Ns Cm \&:active Ar label .
908 .Bl -tag -width "commands "
910 .Qq Ar id Ns Cm :set_current_page Ar n
911 switches to zero-based page number
916 .Ss GtkPrintUnixDialog
917 .Bl -tag -width "commands "
919 .Qq Ar id Ns Cm :print Ar file.ps
920 opens the print dialog.
925 to the printer the user selected in the dialog.
927 .Qq Ar id Ns Cm \&:closed
929 .Cm GtkPrintUnixDialog
930 window was closed by the window manager.
933 .Bl -tag -width "commands "
935 .Qq Ar id Ns Cm :set_fraction Ar x
936 moves the progress bar to
938 .Pq between 0 and 1 .
940 .Qq Ar id Ns Cm :set_text Bq Ar string
941 replaces the text of the progress bar with
943 Default is the progress percentage.
948 .Bl -tag -width "commands "
950 .Qq Ar id Ns Cm :set_active 1
951 switches the button on.
952 All other buttons of the same group will go off automatically.
954 .Qq Ar id Ns Cm :set_label Ar string
955 replaces the button text with
964 .Bl -tag -width "commands "
966 .Qq Ar id Ns Cm :set_value Ar x
967 moves the slider to value
970 .Qq Ar id Ns Cm \&:value Ar floating_point_text
972 .Ss GtkScrolledWindow
973 .Bl -tag -width "commands "
975 .Qq Ar id Ns Cm :hscroll Ar position
977 .Qq Ar id Ns Cm :vscroll Ar position
980 to the left or top edge of the
981 .Cm GtkScrolledWindow ,
984 .Qq Ar id Ns Cm :hscroll_to_range Ar pos_0 pos_1
986 .Qq Ar id Ns Cm :vscroll_to_range Ar pos_0 pos_1
987 scroll, if necessary, the range between
992 .Cm GtkScrolledWindow .
993 If the range is greater than the window, the initial part of the range
1000 may be unsupported by Glade, but its definition can be inserted
1001 manually into the GtkBuilder
1004 .Bd -literal -offset indent
1006 <object class="GtkSocket" id="socket1">
1007 <property name="visible">True</property>
1008 <property name="can_focus">True</property>
1011 <property name="expand">True</property>
1012 <property name="fill">True</property>
1013 <property name="position">1</property>
1017 .Bl -tag -width "commands "
1020 requests a feedback message containing the socket
1023 .Qq Ar id Ns Cm :id Ar xid
1024 can be used by another process to XEmbed its widgets into the
1027 .Qq Ar id Ns Cm :plug-added ,
1032 Notification that the other process has inserted its widgets into or
1033 removed them from the
1037 .Bl -tag -width "commands "
1039 .Qq Ar id Ns Cm :set_text Ar string
1040 sets the selected value to
1043 .Qq Ar id Ns Cm \&:text Ar text
1046 .Bl -tag -width "commands "
1048 .Qq Ar id Ns Cm :start
1050 .Qq Ar id Ns Cm :stop
1051 start and stop the spinner.
1058 parameter is an arbitrary non-whitespace string.
1059 .Bl -tag -width "commands "
1061 .Qq Ar id Ns Cm :push_id Ar id string ,
1062 .Qq Ar id Ns Cm :push Ar string
1069 respectively, and display it in the statusbar.
1071 .Qq Ar id Ns Cm :pop_id Ar id ,
1072 .Qq Ar id Ns Cm :pop
1073 remove the latest entry associated with context id
1077 respectively, from the statusbar.
1079 .Qq Ar id Ns Cm :remove_all_id Ar id ,
1080 .Qq Ar id Ns Cm :remove_all
1081 remove the entries associated with context id
1085 respectively, from the statusbar.
1090 .Bl -tag -width "commands "
1092 .Qq Ar id Ns Cm :set_active Brq Cm 0 | 1
1093 turns the switch off
1098 .Qq Ar id Ns Cm \&:1
1100 .Qq Ar id Ns Cm \&:0
1104 There should be a dedicated
1106 for sending (parts of) the text.
1114 .Ar foo Ns Cm _send_text
1115 will send the content of the
1120 .Ar foo Ns Cm _send_selection
1121 will send the highlighted part the
1123 .Bl -tag -width "commands "
1125 .Qq Ar id Ns Cm :set_text Ar string
1126 replaces the user-editable text with (potentially empty)
1129 .Qq Ar id Ns Cm :delete
1132 .Qq Ar id Ns Cm :insert_at_cursor Ar string
1137 .Qq Ar id Ns Cm :place_cursor Brq Ar position | Cm end
1138 places the text cursor at
1140 or at the end of the text.
1142 .Qq Ar id Ns Cm :place_cursor_at_line Ar line
1143 places the text cursor at the beginning of
1146 .Qq Ar id Ns Cm :scroll_to_cursor
1147 scrolls to the cursor position if necessary.
1149 .Qq Ar id Ns Cm :save Ar file
1154 command containing the text.
1156 .Qq Ar button_id Ns Cm :text Ar text ,
1164 and backslashes are replaced by
1168 .Bl -tag -width "commands "
1170 .Qq Ar id Ns Cm :set_active Brq Cm 0 | 1
1171 switches the button off
1176 .Qq Ar id Ns Cm :set_label Ar string
1177 replaces the button text with
1180 .Qq Ar id Ns Cm \&:1
1182 .Qq Ar id Ns Cm \&:0
1187 can deal with columns of type
1188 .Cm gboolean , gint , guint , glong , gulong , gint64 , guint64 , gfloat , gdouble ,
1195 refer to the underlying model
1198 .Cm GtkTreeStore ) .
1200 is a sequence of one or more colon-separated integers, e.g.
1204 .Bl -tag -width "commands "
1206 .Qq Ar id Ns Cm :set Ar row column data
1207 replaces the content at
1211 (which should be compatible with the type of
1213 If necessary, new tree nodes are created to obtain the minimal tree
1214 structure needed to support
1217 .Qq Ar id Ns Cm :insert_row Brq Ar row Bo Cm as_child Bc | Cm end
1218 inserts a new, empty row; either as a sibling of
1224 or at the end of the list, respectively.
1226 .Qq Ar id Ns Cm :move_row Ar origin Brq Ar destination | Cm end
1229 within its current level to
1233 .Qq Ar id Ns Cm :remove_row Ar row
1234 removes the row at position
1237 .Qq Ar id Ns Cm :clear
1240 .Qq Ar id Ns Cm :expand Ar row
1241 expands one level of the subtree below
1244 .Qq Ar id Ns Cm :expand_all Bq Ar row
1245 expands the subtree below
1249 .Qq Ar id Ns Cm :collapse Bq Ar row
1250 collapses the subtree below
1254 .Qq Ar id Ns Cm :set_cursor Bq Ar row
1259 .Qq Ar id Ns Cm :scroll Ar row column
1264 .Qq Ar id Ns Cm :save Ar file
1265 stores the content of the underlying model as a sequence of
1270 .Qq Ar id Ns Cm \&:clicked
1272 .Qq Ar id Ns Cm \&: Ns Ar column_type row column value ,
1273 one message per cell in the underlying model for each selected row; or
1275 .Qq Ar id Ns Cm \&: Ns Ar column_type row column new_value ,
1280 .Ss GtkTreeViewColumn
1281 .Bl -tag -width "commands "
1285 .Qq Ar id Ns Cm \&:clicked
1288 .Bl -tag -width "commands "
1290 .Qq Ar id Ns Cm :set_title Ar string
1291 replaces the text in the title bar with
1294 .Qq Ar id Ns Cm :resize Bq Ar width height
1295 changes the window size to
1299 pixels if specified, or to the default size.
1301 .Qq Ar id Ns Cm :move Ar x y
1302 moves the window to position
1305 .Qq Ar id Ns Cm :fullscreen
1307 .Qq Ar id Ns Cm :unfullscreen
1308 switch fullscreen mode on and off.
1310 .Qq Ar id Ns Cm \&:closed
1313 was closed by the window manager.
1318 .Ss Discovering Pipeglade Interactively
1319 Suppose the interface in
1322 .Sx GtkLabel Ql label1
1324 .Sx GtkButton Ql button1 .
1330 .Sx GtkButton , Ql button1:clicked
1331 will be reported on the terminal.
1334 .Dl label1:set_text Button Label
1336 will change the text shown on the label into
1338 .Ss One-Shot File Dialog
1339 Suppose the interface in
1340 .Pa ./simple_open.ui
1342 .Sx GtkFileChooserDialog
1350 .Dl pipeglade -u simple_open.ui
1352 will open the dialog; pressing
1354 will close it after sending the selected filename to
1356 .Ss One-Shot User Notification
1358 .Pa ./simple_dialog.ui
1360 .Sx GtkLabel Ql label1 ,
1362 .Bd -literal -offset indent
1363 pipeglade -u simple_dialog.ui <<< \e
1364 "label1:set_text NOW READ THIS!"
1366 will set the label text accordingly and wait for user input.
1367 .Ss Continuous Input
1368 The following shell command displays a running clock:
1369 .Bd -literal -offset indent
1371 echo "label1:set_text `date`";
1373 done | pipeglade -u simple_dialog.ui
1375 .Ss Continuous Input and Output
1376 The following shell script fragment sets up
1378 for continuous communication with another program,
1380 .Bd -literal -offset indent
1381 pipeglade -i in.fifo -o out.fifo &
1382 # wait for in.fifo and out.fifo to appear
1383 while test ! \e( -e in.fifo -a -e out.fifo \e); do :; done
1384 main_prog <out.fifo >in.fifo
1397 .An Bert Burgemeister
1398 .Aq Mt trebbu@googlemail.com .
1400 Due to what appears to be a bug in cairo v1.14.0,
1402 used with this library version occasionally crashes on