summaryrefslogtreecommitdiffstats
path: root/hacks/config/README
blob: 9771a89ca58c7e2ba2c92bce2db6317230b15832 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262

                              XScreenSaver

            a screen saver and locker for the X window system
                            by Jamie Zawinski

                              version 5.40
                               12-Aug-2018

                     https://www.jwz.org/xscreensaver/

-----------------------------------------------------------------------

This directory contains XML files that describe each of the screenhacks;
the per-hack user interface is constructed based on the things in these
files.  The files are loaded at run-time by xscreensaver-demo (also
known as "the Control Center screensaver properties capplet".)

The tags and parameters used here are:

-----------------------------------------------------------------------

  <screensaver name="PROGRAM-NAME" _label="PRETTY NAME">
     ...
  </screensaver>

        This encloses the whole file: all of the tags described below
        are inside this one.

-----------------------------------------------------------------------

  <command arg="-SWITCH"/>

        specifies that "-SWITCH" always appears on the command line.
        You'll most often see this with "-root".

-----------------------------------------------------------------------

  <boolean id="SYMBOLIC NAME"
           _label="USER VISIBLE STRING"
            arg-set="-SWITCH-A"
            arg-unset="-SWITCH-B"
           />

        This creates a checkbox.

        "id" is currently unused, but may eventually be used for
        letting other widgets refer to this one.

        "_label" is the string printed next to the checkbox.

        "arg-set" is what to insert into the command line if the
        box is checked.

        "arg-unset" is what to insert into the command line if the
        box is unchecked.

        You will probably never specify both "arg-set" and "arg-unset",
        because the setting that is the default should insert nothing
        into the command line (that's what makes it the default.)
        For example:

           <boolean _label="foo" arg-set="-foo" />

        or if "foo" is the default, and must be explicity turned off,

           <boolean _label="foo" arg-unset="-no-foo" />

-----------------------------------------------------------------------

  <number id="SYMBOLIC NAME"
          type="slider"
          arg="-SWITCH %"
          _label="HEADING LABEL"
          _low-label="LEFT LABEL"
          _high-label="RIGHT LABEL"
          low="MIN VALUE"
          high="MAX VALUE"
          default="DEFAULT VALUE"
          [ convert="invert" ]
          />

        This creates a slider.

        The _label is printed above the slider.  The _low-label and
        _high-label are printed to the left and right, respectively.

        If any of the numbers you type has a decimal point, then
        the range is assumed to be a floating-point value; otherwise,
        only integral values will be used.  So be careful about "1"
        versus "1.0".

        If convert="invert" is specified, then the value that the
        user tweaks goes the other way from the value the command
        line expects: e.g., if the slider goes from 10-20 and the
        user picks 13, the converted value goes from 20-10 (and
        would be 17.)  This is useful for converting between the
        concepts of "delay" and "speed".

        In the "arg" string, the first occurence of "%" is replaced
        with the numeric value, when creating the command line.

-----------------------------------------------------------------------

  <number id="SYMBOLIC NAME"
          type="spinbutton"
          arg="-SWITCH %"
          _label="HEADING LABEL"
          low="MIN VALUE"
          high="MAX VALUE"
          default="DEFAULT VALUE"
          [ convert="invert" ]
          />

        This creates a spinbox (a text field with a number in it,
        and up/down arrows next to it.)

        Arguments are exactly like type="slider", except that
        _low-label and _high-label are not used.  Also, _label
        appears to the left of the box, instead of above it.

-----------------------------------------------------------------------

  <select id="SYMBOLIC NAME">
    <option id="SYMBOLIC NAME"
            _label="USER VISIBLE STRING"
            arg-set="-SWITCH"
            />
    [ ... more <options> ... ]
  </select>

        This creates a selection popup menu.

        Options should have arg-set (arg-unset is not used here.)

        One of the menu items (the default) should have no arg-set.

        Each arg-set should begin with the same switch: that is,
        all the args in a given menu should look like:

           -mode one
           -mode two
           -mode three

        and not

           -this
           -that
           -the other

-----------------------------------------------------------------------

  <string id="SYMBOLIC NAME"
           _label="USER VISIBLE STRING"
           arg="-SWITCH %"
           />

        This creates a text entry field.

-----------------------------------------------------------------------

  <file id="SYMBOLIC NAME"
        _label="USER VISIBLE STRING"
        arg="-SWITCH %"
        />

        This creates a file entry field (a text field with a "Browse"
        button next to it.)

-----------------------------------------------------------------------

  <xscreensaver-text />

        This indicates that this screen saver displays text via the
        "xscreensaver-text" program.  

        In the X11 version, this tag does nothing: the text-related
        preferences are in the main Screen Saver Preferences window,
        not in the per-display-mode preferences.

        In the MacOS version, the text-related preferences appear
        in this pane, and this tag emits those several controls.

-----------------------------------------------------------------------

  <xscreensaver-image />

        This indicates that this screen saver displays images via the
        "xscreensaver-getimage" program.  

        In the X11 version, this tag does nothing: the image-loading
        and screen-grabbing-related preferences are in the main
        Screen Saver Preferences window, not in the per-display-mode
        preferences.

        In the MacOS version, the image-related preferences appear
        in this pane, and this tag emits those several controls.

-----------------------------------------------------------------------

  <xscreensaver-updater />

        Where to position the "Check for Updates" options.
        This is used on MacOS and ignored on X11.

-----------------------------------------------------------------------

  <video href="URL" />

        A link to a Youtube preview of this screen saver.

-----------------------------------------------------------------------

  <hgroup>
    [ ... <boolean>s ... ]
    [ ... <number>s ... ]
    [ ... <select>s ... ]
    [ ... <string>s ... ]
    [ ... <file>s ... ]
    [ ... <vgroup>s ... ]
  </hgroup>

        A horizontal group of widgets/groups.  No more than 4 widgets 
        or groups should be used in a row.

-----------------------------------------------------------------------

  <vgroup>
    [ ... <boolean>s ... ]
    [ ... <number>s ... ]
    [ ... <select>s ... ]
    [ ... <string>s ... ]
    [ ... <file>s ... ]
    [ ... <hgroup>s ... ]
  </vgroup>

        A vertical group of widgets/groups.  No more than 10 widgets 
        or groups should be used in a column.
        
        Since the default alignment of widgets is a column, the 
        <vgroup> element is only of use inside an <hgroup> element.

-----------------------------------------------------------------------

  <_description>
        FREE TEXT
  </_description>

        This is the description of the hack that appears in the right
        part of the window.  Lines are wrapped; paragraphs are separated
        by blank lines.  Lines that begin with whitespace will not be
        wrapped (see "munch.xml" for an example of why.)

        Make sure you use "&lt;" instead of "<", etc.  Character
        entities are allowed; HTML (and other markup) is not.

-----------------------------------------------------------------------

If you are DTD-minded, you may also find the included files "xss.dtd"
and "xss.xsd" useful.

-----------------------------------------------------------------------