apk::
$(MAKE2) -C android apk
+# Update the version numbers in faq.html, bugs.html, etc.
+www_versions::
+ @ \
+ DEST=$$HOME/www/xscreensaver ; \
+ VERS=`sed -n 's/[^0-9]*\([0-9]\.[0-9][^. ]*\).*/\1/p' utils/version.h | \
+ head -1` ; \
+ TMP=/tmp/xd.$$$$ ; \
+ for f in $$DEST/*.html ; do \
+ sed "s/\(CLASS=.latest.>\)[^<>]*\(<\)/\1$$VERS\2/gi" < "$$f" > "$$TMP" ;\
+ if ! cmp -s "$$f" "$$TMP" ; then \
+ diff -U0 "$$f" "$$TMP" ; \
+ cp -p "$$TMP" "$$f" ; \
+ fi ; \
+ rm -f "$$TMP" ; \
+ done
+
www::
@ \
DEST=$$HOME/www/xscreensaver ; \
exit 1 ; \
fi ; \
\
+ $(MAKE2) www_versions ; \
$(MAKE2) -C OSX updates.xml ; \
\
if [ ! -f $$NAME ]; then \
-/* xscreensaver, Copyright © 2020-2021 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright © 2020-2022 Jamie Zawinski <jwz@jwz.org>
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
#define CYCLE_DEFAULT (5 * 60)
-// Returns a string that (hopefully) uniquely identifies the NSScreen,
-// and will survive reboots. Also the pretty name of that screen.
+// Returns a string that (hopefully) uniquely identifies the display hardware
+// associated with this NSScreen in such a way that it will persist across
+// reboots. Also the pretty name of that screen.
//
static NSArray *
screen_id (NSScreen *screen)
{
+ NSData *edid = NULL;
+ NSString *name = NULL;
+
NSDictionary *d = [screen deviceDescription];
- // This is the CGDirectDisplayID. "A display ID can persist across
- // processes and typically remains constant until the machine is
- // restarted." It does not always persist across reboots.
+ // This is the CGDirectDisplayID. "A display ID can persist across processes
+ // and typically remains constant until the machine is restarted." It does
+ // not always persist across reboots.
//
unsigned long id = [[d objectForKey:@"NSScreenNumber"] unsignedLongValue];
- // The EDID of a display contains manufacturer, product ID, and most
- // importantly, serial number. So that should persist.
+ // Aug 2022: CGDisplayIOServicePort has been deprecated since 10.9, and as
+ // of 12.5, it always returns NULL, at least on M1 hardware. Perhaps this
+ // should be #if __x86_64__ or !__arm64__?
//
# pragma clang diagnostic push // "CGDisplayIOServicePort deprecated in 10.9"
# pragma clang diagnostic ignored "-Wdeprecated-declarations"
- io_service_t display_port = CGDisplayIOServicePort(id);
+ io_service_t dport = CGDisplayIOServicePort (id);
# pragma clang diagnostic pop
- if (display_port == MACH_PORT_NULL) {
- // No physical device to get a name from... are we in Screen Sharing?
- NSLog(@"no device for display %lu", id);
- return @[ [NSString stringWithFormat:@"%08lX", id],
- @"unknown" ];
+ if (dport != MACH_PORT_NULL) {
+ NSDictionary *d2 = (NSDictionary *) // CFDictionaryRef
+ IODisplayCreateInfoDictionary (dport, kIODisplayOnlyPreferredName);
+
+ // This returns the EDID as a 256-bytes binary blob that contains, among
+ // other things, the manufacturer, product ID, and unique serial number.
+ //
+ edid = [d2 objectForKey:[NSString stringWithUTF8String:kIODisplayEDIDKey]];
+
+ // Now get the human-readable name of the screen.
+ // The dict has an entry like: "DisplayProductName": { "en_US": "iMac" };
+ //
+ NSDictionary *names =
+ [d2 objectForKey: [NSString stringWithUTF8String:kDisplayProductName]];
+ if (names && [names count] > 0)
+ name = [[names objectForKey:[[names allKeys] objectAtIndex:0]] retain];
+
+ [d2 release];
}
- NSDictionary *d2 = (NSDictionary *) // CFDictionaryRef
- IODisplayCreateInfoDictionary (display_port, kIODisplayOnlyPreferredName);
- NSData *edid = [d2 objectForKey:
- [NSString stringWithUTF8String:kIODisplayEDIDKey]];
- NSString *b64;
- if (!edid) {
- // For ancient monitors and safe-mode graphics drivers.
- b64 = [NSString stringWithFormat:@"%08lX", id];
- } else {
- // But the EDID is 256 binary bytes. That's annoyingly big.
- // So let's hash and base64 it for use as the resource key.
- // That's 43 characters.
+ if (! edid) {
+ //
+ // If we weren't able to retrieve the full 256-byte EDID above, hopefully
+ // these three numbers also uniquely identify the hardware.
+ //
+ // However, they won't always. I have an "EDID Ghost" adapter (a dongle
+ // to prevent resolution negotiation) whose serial number is 0. Maybe if
+ // I had two of them, even the 256-byte version would be non-unique.
+ //
+ // We could also dig through IOServiceMatching("IOMobileFramebuffer") in
+ // order to find more info about the displays in the "DisplayAttributes"
+ // dictionary (see "ioreg -lw0") but that probably won't give us anything
+ // more unique than the above. In particular, that dict contains an
+ // entry for "EDID UUID" which is a hex string of 16 bytes that does
+ // *not* distinguish between two different monitors of the same model.
//
+ uint32_t bin[3];
+ bin[0] = CGDisplayVendorNumber (id);
+ bin[1] = CGDisplayModelNumber (id);
+ bin[2] = CGDisplaySerialNumber (id);
+ if (bin[0] || bin[1] || bin[2])
+ edid = [NSData dataWithBytes:bin length:sizeof(bin)];
+ }
+
+ if (!name || !name.length) {
+ //
+ // We might have gotten the name from CGDisplayIOServicePort ->
+ // kIODisplayOnlyPreferredName. If not, use the localized display name.
+ // which was introduced in macOS 10.15. Maybe those are identical?
+ //
+ if (@available (macOS 10.15, *))
+ name = [screen localizedName];
+ if (!name || !name.length)
+ name = @"unknown";
+ }
+
+ if (! edid) {
+ //
+ // If we weren't able to find the EDID at all, use the display name, size
+ // and position, and hope that is invariant across boots. Good luck!
+ //
+ edid = [[NSString stringWithFormat:@"%dx%d @ %d+%d, %@",
+ (int) screen.frame.size.width,
+ (int) screen.frame.size.height,
+ (int) screen.frame.origin.x,
+ (int) screen.frame.origin.y,
+ name]
+ dataUsingEncoding: NSUTF8StringEncoding];
+ }
+
+ //
+ // The EDID might be only 12 bytes, or it might be 256 bytes, which is
+ // annoyingly big. Or somewhere in between. So if it's more than 32 bytes,
+ // hash it first. After base64, the resource key will be no more than 43
+ // characters.
+ //
+ if (edid.length > CC_SHA256_DIGEST_LENGTH) {
const char *bytes = [edid bytes];
unsigned char out[CC_SHA256_DIGEST_LENGTH + 1];
CC_SHA256 (bytes, edid.length, out);
- b64 = [[NSData dataWithBytes:bytes length:CC_SHA256_DIGEST_LENGTH]
- base64EncodedStringWithOptions:0];
- // Replace irritating b64 characters with safer ones.
- b64 = [[[b64 stringByReplacingOccurrencesOfString:@"+" withString:@"-"]
- stringByReplacingOccurrencesOfString:@"/" withString:@"_"]
- stringByReplacingOccurrencesOfString:@"=" withString:@""];
+ edid = [NSData dataWithBytes: out
+ length: CC_SHA256_DIGEST_LENGTH];
}
- // Now get the human-readable name of the screen.
- // The dict has an entry like: "DisplayProductName": { "en_US": "iMac" };
- //
- NSString *name = @"unknown";
- NSDictionary *names =
- [d2 objectForKey: [NSString stringWithUTF8String:kDisplayProductName]];
- if (names && [names count] > 0)
- name = [[names objectForKey:[[names allKeys] objectAtIndex:0]] retain];
+ NSString *b64 = [edid base64EncodedStringWithOptions:0];
- [d2 release];
+ // Replace irritating b64 characters with safer ones.
+ b64 = [[[b64 stringByReplacingOccurrencesOfString:@"+" withString:@"-"]
+ stringByReplacingOccurrencesOfString:@"/" withString:@"_"]
+ stringByReplacingOccurrencesOfString:@"=" withString:@""];
return @[ b64, name ]; // Analyzer says name leaks?
}
static NSString *
-resource_key_for_name (NSString *s, BOOL screen_p)
+resource_key_for_name (NSString *s, BOOL screen_p, NSDictionary *screen_ids)
{
if (screen_p) {
- const char *name = [s UTF8String];
- int n;
- char dummy;
- if (2 != sscanf (name, "Screen %d %c", &n, &dummy))
- return 0;
-
- NSArray *dscreens = [NSScreen screens];
- NSScreen *sc = [dscreens objectAtIndex: n-1];
- NSArray *aa = screen_id (sc);
- NSString *id = [aa objectAtIndex:0];
+ NSString *id = [screen_ids objectForKey: s];
return [NSString stringWithFormat:@"screen_%@_disabled", id];
-
} else {
// Keep risky characters out of the preferences database.
NSMutableCharacterSet *set =
if (p && frame.size.width >= 640)
p = NO;
- if (p && getenv("SELECTED_SAVER")) // Running under SaverTester
- p = NO;
+// if (p && getenv("SELECTED_SAVER")) // Running under SaverTester
+// p = NO;
self = [super initWithFrame:frame isPreview:p];
if (! self) return 0;
[seen setObject:p forKey: [name lowercaseString]];
- NSString *res = resource_key_for_name (name, FALSE);
+ NSString *res = resource_key_for_name (name, FALSE, NULL);
BOOL disabled = get_boolean (res, prefs);
if (disabled) {
// NSLog(@"disabled: %@", name);
{
NSTableView *screen_table, *saver_table;
NSTextField *timerLabel;
- NSArray *screens, *savers;
+ NSArray *savers;
+ NSArray *screen_names; // Readable, sortable strings printed in the list
+ NSDictionary *screen_ids; // screen_names -> resource id
NSUserDefaultsController *prefs;
}
NSRect frame;
frame.origin.x = 0;
frame.origin.y = 0;
- frame.size.width = 400;
- frame.size.height = 480;
+ frame.size.width = 460;
+ frame.size.height = 520;
[self setFrame:frame display:NO];
self.minSize = frame.size;
frame.size.height = 99999;
// Screen table view
+ NSArray *dscreens = [NSScreen screens];
+
+ NSMutableDictionary *screen_ords =
+ [NSMutableDictionary dictionaryWithCapacity: [dscreens count]];
+
{
- NSArray *dscreens = [NSScreen screens];
- NSMutableArray *s2 = [NSMutableArray arrayWithCapacity: [dscreens count]];
+ // Save the original number of the screens.
for (int i = 0; i < [dscreens count]; i++) {
NSScreen *sc = [dscreens objectAtIndex: i];
+ NSDictionary *d = [sc deviceDescription];
+ NSNumber *sid = [d objectForKey:@"NSScreenNumber"];
+ [screen_ords setObject: [NSNumber numberWithInteger:i] forKey: sid];
+ }
+
+ // Sort the screens left to right, then top to bottom.
+ dscreens = [dscreens sortedArrayUsingComparator:
+ ^ NSComparisonResult (id a, id b) {
+ NSScreen *sa = a;
+ NSScreen *sb = b;
+ return (sa.frame.origin.x > sb.frame.origin.x ? NSOrderedDescending :
+ sa.frame.origin.x < sb.frame.origin.x ? NSOrderedAscending :
+ sa.frame.origin.y > sb.frame.origin.y ? NSOrderedDescending :
+ sa.frame.origin.y < sb.frame.origin.y ? NSOrderedAscending :
+ NSOrderedSame);
+ }];
+
+ NSMutableArray *sn = [NSMutableArray arrayWithCapacity: [dscreens count]];
+ NSMutableDictionary *si = [NSMutableDictionary
+ dictionaryWithCapacity:[dscreens count]];
+ for (int i = 0; i < [dscreens count]; i++) {
+ NSScreen *sc = [dscreens objectAtIndex: i];
+ NSDictionary *d = [sc deviceDescription];
+ NSNumber *sid = [d objectForKey:@"NSScreenNumber"];
+ int ord = [(NSNumber *) [screen_ords objectForKey: sid] integerValue];
+
NSArray *aa = screen_id (sc);
+ NSString *id = [aa objectAtIndex:0];
NSString *desc = [aa objectAtIndex:1];
- [s2 addObject: [NSString stringWithFormat:
- @"Screen %d - %d x %d @ %d, %d (%@)",
- (i + 1),
- (int) sc.frame.size.width,
- (int) sc.frame.size.height,
- (int) sc.frame.origin.x,
- (int) sc.frame.origin.y,
- desc]];
+ NSString *name = [NSString stringWithFormat:
+ @"Screen %d - %d x %d @ %d, %d (%@)",
+ (ord + 1),
+ (int) sc.frame.size.width,
+ (int) sc.frame.size.height,
+ (int) sc.frame.origin.x,
+ (int) sc.frame.origin.y,
+ desc];
+ [sn addObject: name];
+ [si setObject:id forKey:name];
}
- screens = [s2 retain];
+ screen_names = [sn retain];
+ screen_ids = [si retain];
}
NSScrollView *sv = [[NSScrollView alloc] init];
frame.size.width = panel.frame.size.width - margin * 2;
frame.size.height = stab.frame.size.height;
frame.size.height += line_height * 2; // tab headers, sigh
- int max = line_height * 5;
+ int max = line_height * 10; // 7 = 3 lines??
if (frame.size.height > max) frame.size.height = max;
frame.origin.x = margin;
frame.origin.y = hlab.frame.origin.y - frame.size.height - margin;
sv.frame = frame;
- if ([screens count] <= 1) { // Hide the screens list if there's only one.
+ if ([screen_names count] <= 1) { // Hide the screens list if only one.
[sv removeFromSuperview];
frame.origin.y += frame.size.height + margin;
frame.size.height = 0;
- (NSInteger)numberOfRowsInTableView:(NSTableView *) tv
{
if (tv == screen_table) {
- return [screens count];
+ return [screen_names count];
} else if (tv == saver_table) {
return [savers count];
} else {
{
BOOL screen_p = (tv == screen_table);
NSString *s = (screen_p
- ? [screens objectAtIndex: y]
+ ? [screen_names objectAtIndex: y]
: [savers objectAtIndex: y]);
- return resource_key_for_name (s, screen_p);
+ return resource_key_for_name (s, screen_p, screen_ids);
}
NSString *s;
if (tv == screen_table) {
- s = [screens objectAtIndex: y];
+ s = [screen_names objectAtIndex: y];
} else { // if (tv == saver_table) {
s = [savers objectAtIndex: y];
}
sortDescriptorsDidChange: (NSArray *) od
{
BOOL screen_p = (tv == screen_table);
- NSArray *aa = (screen_p ? screens : savers);
+ NSArray *aa = (screen_p ? screen_names : savers);
// Only one column should be sorting at a time. Surely this is the wrong
// right way to accomplish this, as I don't know which of the two columns
NSMutableDictionary *cc = [[NSMutableDictionary alloc] init];
for (NSString *s in aa) {
- NSString *res = resource_key_for_name (s, screen_p);
+ NSString *res = resource_key_for_name (s, screen_p, screen_ids);
BOOL checked = !get_boolean (res, prefs);
[cc setObject:[NSNumber numberWithBool: checked] forKey:s];
}
[aa retain];
if (tv == screen_table) {
- [screens release];
- screens = aa;
+ [screen_names release];
+ screen_names = aa;
} else if (tv == saver_table) {
[savers release];
savers = aa;
- (void) selectAllAction:(NSObject *)arg selected:(BOOL)selected
{
for (NSString *s in savers) {
- NSString *res = resource_key_for_name (s, NO);
+ NSString *res = resource_key_for_name (s, NO, screen_ids);
if (selected) // checkmark means no "disabled" entry in prefs
[[prefs defaults] removeObjectForKey: res];
else
- (void) dealloc
{
- [screens release];
+ [screen_names release];
+ [screen_ids release];
[savers release];
[super dealloc];
}
jwxyz_window_resized (xdpy);
# if !defined __OPTIMIZE__ || TARGET_IPHONE_SIMULATOR
- NSLog(@"reshape %.0fx%.0f", new_size.width, new_size.height);
+ NSLog(@"reshape %.0fx%.0f %.1fx", new_size.width, new_size.height, s);
# endif
// Next time render_x11 is called, run the saver's reshape_cb.
\pard\pardeftab720
\cf0 \
-\b To install all 240+ screen savers:\
+\b To install all 250+ screen savers:\
\pard\pardeftab720\li360
\b0 \cf0 \
-/* xscreensaver, Copyright © 1992-2021 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright © 1992-2022 Jamie Zawinski <jwz@jwz.org>
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
}
-#else /* macOS 10.5+ */
+#else /* !HAVE_IPHONE */
extern float jwxyz_scale (Window); /* jwxyzI.h */
+static void
+authorize_screen_capture (void)
+{
+ static Bool done_once = False;
+ if (done_once) return;
+ done_once = True;
+
+ /* The following nonsense is intended to get the system to pop up the dialog
+ saying "do you want to allow legacyScreenSaver to be able to record your
+ screen?" Without the user saying yes to that, we are only able to get
+ the desktop background image instead of a screen shot. Also this is
+ async, so if that dialog has popped up, the *current* screen grab will
+ still fail.
+
+ To reset answers given to that dialog: "tccutil reset ScreenCapture".
+
+ Sadly, this is not working at all. If the .saver bundle is launched by
+ SaverTester, the dialog is triggered on behalf of SaverTester, and works.
+ But if it the bundle is launched by the real screen saver, or by System
+ Preferences, the dialog is not triggered.
+
+ Manually dragging "/System/Library/Frameworks/ScreenSaver.framework/
+ PlugIns/legacyScreenSaver.appex" onto the "System Preferences / Security /
+ Privacy / Screen Recording" list makes screen grabbing work, but that's
+ a lot to ask of the end user. And, oddly, after dragging it there, it
+ does not appear in the list at all (and there's no way to un-check it).
+
+ We can open that preferences pane with
+ "open x-apple.systempreferences:com.apple.preference.security?Privacy_ScreenCapture"
+ but there's no way to auto-add legacyScreenSaver to it, even unchecked.
+ */
+
+# if 1
+ /* CGDisplayStreamRef stream = */ /* Just leak it, I guess? */
+ CGDisplayStreamCreateWithDispatchQueue (CGMainDisplayID(),
+ 1, 1, kCVPixelFormatType_32BGRA,
+ nil,
+ dispatch_get_main_queue(),
+ nil);
+ /* I think that if the returned value is nil, it means the screen grab
+ will be returning just the background image instead of the desktop.
+ So in that case we could return False here to go with colorbars.
+ But the desktop background image is still more interesting than
+ colorbars, so let's just use that. */
+
+# elif 0
+ /* This also does not work. */
+ if (@available (macos 10.15, *)) {
+ CGImageRef img =
+ CGWindowListCreateImage (CGRectMake(0, 0, 1, 1),
+ kCGWindowListOptionOnScreenOnly,
+ kCGNullWindowID,
+ kCGWindowImageDefault);
+ CFRelease (img);
+ }
+
+# elif 0
+ /* This also does not work. */
+ if (@available (macos 10.15, *))
+ CGRequestScreenCaptureAccess();
+# endif
+}
+
+
/* Loads an image into the Drawable, returning once the image is loaded.
*/
Bool
int window_x, window_y;
Window unused;
+ authorize_screen_capture();
+
// Figure out where this window is on the screen.
//
XGetWindowAttributes (dpy, xwindow, &xgwa);
cgrect.size.width = xgwa.width / s;
cgrect.size.height = xgwa.height / s;
- /* The following nonsense is intended to get the system to pop up the dialog
- saying "do you want to allow legacyScreenSaver to be able to record your
- screen?" Without the user saying yes to that, we are only able to get
- the desktop background image instead of a screen shot. Also this is
- async, so if that dialog has popped up, the *current* screen grab will
- still fail.
-
- To reset answers given to that dialog: "tccutil reset ScreenCapture".
-
- Sadly, this is not working at all. If the .saver bundle is launched by
- SaverTester, the dialog is triggered on behalf of SaverTester, but it is
- not triggered on behalf of ScreenSaverEngine or System Preferences.
-
- Manually dragging "/System/Library/Frameworks/ScreenSaver.framework/
- PlugIns/legacyScreenSaver.appex" onto the "System Preferences / Security /
- Privacy / Screen Recording" list makes screen grabbing work, but that's
- a lot to ask of the end user. And, oddly, after dragging it there, it
- does not appear in the list.
- */
- {
- static Bool done_once = False;
- if (! done_once) {
- done_once = True;
- /* CGDisplayStreamRef stream = */ /* Just leak it, I guess? */
- CGDisplayStreamCreateWithDispatchQueue (CGMainDisplayID(),
- 1, 1, kCVPixelFormatType_32BGRA,
- nil,
- dispatch_get_main_queue(),
- nil);
- /* I think that if the returned value is nil, it means the screen grab
- will be returning just the background image instead of the desktop.
- So in that case we could return False here to go with colorbars.
- But the desktop background image is still more interesting than
- colorbars, so let's just use that. */
- }
- }
-
-
CGWindowID windowNumber = (CGWindowID) nsview.window.windowNumber;
/* If a password is required to unlock the screen, a large black
Oct 2016: Surprise, this trick no longer works on MacOS 10.12. Sigh.
- Nov 2021, macOS 11.6, 12.0: I'm pretty sure none of this works this way
- any more, and so probably the following clause is no longer necessary?
+ Nov 2021, macOS 11.6, 12.0: This works again. Without the following
+ clause, we do indeed grab a black image.
*/
{
CFArrayRef L = CGWindowListCopyWindowInfo (kCGWindowListOptionOnScreenOnly,
return True;
}
-
-/* Returns the EXIF rotation property of the image, if any.
- */
-static int
-exif_rotation (const char *filename)
-{
- /* As of 10.6, NSImage rotates according to EXIF by default:
- http://developer.apple.com/mac/library/releasenotes/cocoa/appkit.html
- Prior to that, we had to do it by hand.
- */
- return -1;
-}
-
-# endif /* macOS 10.5+ */
+# endif /* !HAVE_IPHONE */
return False;
jwxyz_draw_NSImage_or_CGImage (DisplayOfScreen (screen), drawable,
- True, img, geom_ret,
- exif_rotation (filename));
+ True, img, geom_ret, -1);
[img release];
return True;
xscreensaver &
xscreensaver-settings
- There are many compilation dependencies. The configure script will
- tell you what is missing. At the least, you will need development
- versions of these libraries:
+ There are many compilation dependencies. The configure script will tell
+ you what is missing. At the least, you will need development versions of
+ these libraries. Append "-dev" or "-devel" to most of these:
perl pkg-config gettext intltool libx11 libxext libxi libxt libxft
- libxinerama libxrandr libxxf86vm libgl libglu libgle libgtk2.0
- libgdk-pixbuf2.0 libgdk-pixbuf-xlib-2.0 libjpeg libxml2 libpam
- libsystemd elogind
+ libxinerama libxrandr libxxf86vm libgl libglu libgle libgtk-3-0
+ libgdk-pixbuf2.0 libjpeg libxml2 libpam libsystemd elogind
BSD systems might need gmake instead of make.
Version History
===============================================================================
+6.05 * X11: Cope with dumb DPMS settings that existed pre-startup.
+ * X11: Silence new Perl warnings from `xscreensaver-getimage-file'.
+ * X11: Fix `sonar' pthreads crash on recent Pi systems.
+ * X11: Removed dependence on `gdk-pixbuf-xlib-2.0'.
+ * X11: GTK 3 is now required.
+ * macOS: Fixed the "Run savers on screens" preference in Random mode
+ on multi-screen M1 systems.
+
6.04 * New hacks, `nakagin' and `chompytower'.
* Settings dialog shows diagnostics for bad image folders and feeds.
* URLs for `imageDirectory' can now point at archive.org collections.
the parameters which are normally read as minutes can be specified
in seconds.
* Added colormap cycling to `imsmap'.
- * Made hyper work with K&R compilers.
+ * Made `hyper' work with K&R compilers.
1.14 * Added `orbit' option to `attraction' hack.
* Added `lock-timeout' option.
1.09 * Added demo mode, and locking.
* Added `maze' hack.
* Added `norotate' option to `rocks' hack.
+ * Uploaded to export.lcs.mit.edu:contrib/xscreensaver.tar.Z and posted
+ to comp.windows.x.announce, 25-Feb-1993.
+ * Added `hypercube' and `slidescreen' (or they may have been added
+ earlier).
1.05 * Works when run from XDM before anyone logs in.
* Sped up `imsmap'.
* Can use `xv' as a slideshow without using up colormap entries while
the screen is not blanked.
* Fixed a BadDrawable error in non-XIdle mode.
- * Added `blitspin' and `imsmap'.
+ * Uploaded to export.lcs.mit.edu:contrib/xsaver.tar.Z and posted to
+ comp.windows.x.announce, 30-Nov-1992.
+
+1.04 * Added `blitspin' and `imsmap' (or they may have been earlier).
+ * Appeared on the X11R5 contrib tape, a mirror of export.lcs.mit.edu,
+ 29-Nov-1992.
+
+1.00 * Uploaded to export.lcs.mit.edu:contrib/xsaver.tar.Z and posted to
+ comp.windows.x.announce, 17-Aug-1992.
+ * Initial list of included hacks:
+ `qix', `helix', `rorschach', `attraction', `greynetic', `rocks',
+ `pyro', `hopalong', and `noseguy'.
-1.01 * Current list of included hacks is now: `qix', `helix', `rorschach',
- `attraction', `greynetic', `rocks', `pyro', `hopalong', and
- `noseguy'.
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.2-all.zip
/* config.h.in. Generated from configure.ac by autoheader. */
-/* xscreensaver, Copyright © 1991-2021 Jamie Zawinski.
+/* xscreensaver, Copyright © 1991-2022 Jamie Zawinski.
* Generate this file by running 'configure' rather than editing it by hand.
*/
/* Define this if you have forkpty. */
#undef HAVE_FORKPTY
-/* Define this if you have GDK_Pixbuf. */
+/* Define this if you have GDK-Pixbuf. */
#undef HAVE_GDK_PIXBUF
/* Define this if you have the gdk_pixbuf_apply_embedded_orientation function
(gdk-pixbuf 2.12). */
#undef HAVE_GDK_PIXBUF_APPLY_EMBEDDED_ORIENTATION
+/* Define this if you have GDK-Pixbuf-Xlib. */
+#undef HAVE_GDK_PIXBUF_XLIB
+
/* Define to 1 if you have the `getaddrinfo' function. */
#undef HAVE_GETADDRINFO
/* Define this if OpenGL supports the OpenGL Shading Language. */
#undef HAVE_GLSL
-/* Define this if you have Gtk */
-#undef HAVE_GTK
-
/* Define this if you have Gtk 2.x. */
-#undef HAVE_GTK2
+#undef HAVE_GTK
/* Define this for HPUX so-called "Secure Passwords". */
#undef HAVE_HPUX_PASSWD
NEW_LOGIN_COMMAND
COMMENT_PAM_CHECK_ACCOUNT
HAVE_PAM_FAIL_DELAY
+GLIB_COMPILE_RESOURCES
INSTALL_PAM
INSTALL_DIRS
SETCAP_HACKS
#
###############################################################################
+# Note: In the decades since I wrote this, PKG_CHECK_MODULES came into
+# existence, which could probably simplify the following quite a bit.
+
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
if test "$with_gtk" = yes; then
have_gtk=no
+ pkgs=''
ok="yes"
- pkg_check_version gtk+-2.0 2.22.0 ; ac_gtk_version_string="$vers"
- pkg_check_version gmodule-2.0 2.0.0
- pkg_check_version libxml-2.0 2.4.6
- pkg_check_version gdk-pixbuf-2.0 2.0.0
- pkg_check_version gdk-pixbuf-xlib-2.0 2.0.0
+ pkg_check_version gtk+-3.0 2.22.0 ; ac_gtk_version_string="$vers"
+ pkg_check_version gmodule-2.0 2.0.0
+ pkg_check_version libxml-2.0 2.4.6
+ pkg_check_version gdk-pixbuf-2.0 2.0.0
have_gtk="$ok"
+ gtk_pkgs="$pkgs"
if test "$have_gtk" = no; then
if test -n "$ac_gtk_version_string" ; then
GTK_LIBS="$GTK_LIBS $ac_gtk_config_libs"
printf "%s\n" "#define HAVE_GTK 1" >>confdefs.h
- printf "%s\n" "#define HAVE_GTK2 1" >>confdefs.h
-
printf "%s\n" "#define HAVE_XML 1" >>confdefs.h
fi
+
+ if test "$have_gtk" = yes; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Glib resource compiler" >&5
+printf %s "checking for Glib resource compiler... " >&6; }
+if test ${ac_cv_glib_res+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ ac_cv_glib_res=`$pkg_config --variable=glib_compile_resources gio-2.0`
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_glib_res" >&5
+printf "%s\n" "$ac_cv_glib_res" >&6; }
+ GLIB_COMPILE_RESOURCES="$ac_cv_glib_res"
+ fi
+
fi
# Check for the various Gnome help and URL loading programs.
###############################################################################
have_gdk_pixbuf=no
+have_gdk_pixbuf_xlib=no
with_gdk_pixbuf_req=unspecified
# Check whether --with-pixbuf was given.
pkgs=''
ok="yes"
-
- pkg_check_version gdk-pixbuf-2.0 2.0.0
- pkg_check_version gdk-pixbuf-xlib-2.0 2.0.0
- pkg_check_version gio-2.0 2.0.0
+ pkg_check_version gdk-pixbuf-2.0 2.0.0
+ pkg_check_version gio-2.0 2.0.0
have_gdk_pixbuf="$ok"
+ pixbuf_pkgs="$pkgs"
if test "$have_gdk_pixbuf" = yes; then
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gdk-pixbuf includes" >&5
#
ac_save_gdk_pixbuf_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS $ac_gdk_pixbuf_config_cflags"
-
have_gdk_pixbuf=no
- # check for header A...
-
ac_save_CPPFLAGS="$CPPFLAGS"
if test \! -z "$includedir" ; then
CPPFLAGS="$CPPFLAGS -I$includedir"
fi
CPPFLAGS="$ac_save_CPPFLAGS"
-
- # if that worked, check for header B...
- if test "$have_gdk_pixbuf" = yes; then
- have_gdk_pixbuf=no
- gdk_pixbuf_halfassed=yes
-
- ac_save_CPPFLAGS="$CPPFLAGS"
- if test \! -z "$includedir" ; then
- CPPFLAGS="$CPPFLAGS -I$includedir"
- fi
- CPPFLAGS="$CPPFLAGS $X_CFLAGS"
- CPPFLAGS=`eval eval eval eval eval eval eval eval eval echo $CPPFLAGS`
- ac_fn_c_check_header_compile "$LINENO" "gdk-pixbuf/gdk-pixbuf-xlib.h" "ac_cv_header_gdk_pixbuf_gdk_pixbuf_xlib_h" "$ac_includes_default"
-if test "x$ac_cv_header_gdk_pixbuf_gdk_pixbuf_xlib_h" = xyes
-then :
- have_gdk_pixbuf=yes
- gdk_pixbuf_halfassed=no
-fi
-
- CPPFLAGS="$ac_save_CPPFLAGS"
-
- # yay, it has a new name in Gtk 2.x...
- if test "$have_gdk_pixbuf" = no; then
- have_gdk_pixbuf=no
- gdk_pixbuf_halfassed=yes
-
- ac_save_CPPFLAGS="$CPPFLAGS"
- if test \! -z "$includedir" ; then
- CPPFLAGS="$CPPFLAGS -I$includedir"
- fi
- CPPFLAGS="$CPPFLAGS $X_CFLAGS"
- CPPFLAGS=`eval eval eval eval eval eval eval eval eval echo $CPPFLAGS`
- ac_fn_c_check_header_compile "$LINENO" "gdk-pixbuf-xlib/gdk-pixbuf-xlib.h" "ac_cv_header_gdk_pixbuf_xlib_gdk_pixbuf_xlib_h" "$ac_includes_default"
-if test "x$ac_cv_header_gdk_pixbuf_xlib_gdk_pixbuf_xlib_h" = xyes
-then :
- have_gdk_pixbuf=yes
- gdk_pixbuf_halfassed=no
-fi
-
- CPPFLAGS="$ac_save_CPPFLAGS"
- fi
- fi
CPPFLAGS="$ac_save_gdk_pixbuf_CPPFLAGS"
fi
if test "$have_gdk_pixbuf" = yes; then
# we have the headers, now check for the libraries
have_gdk_pixbuf=no
- gdk_pixbuf_halfassed=yes
-
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: checking for gdk_pixbuf usability..." >&5
printf "%s\n" "checking for gdk_pixbuf usability..." >&6; }
- # library A...
-
ac_save_CPPFLAGS="$CPPFLAGS"
ac_save_LDFLAGS="$LDFLAGS"
# ac_save_LIBS="$LIBS"
LDFLAGS="$ac_save_LDFLAGS"
# LIBS="$ac_save_LIBS"
- # library B...
- if test "$have_gdk_pixbuf" = yes; then
- have_gdk_pixbuf=no
-
- ac_save_CPPFLAGS="$CPPFLAGS"
- ac_save_LDFLAGS="$LDFLAGS"
-# ac_save_LIBS="$LIBS"
-
- if test \! -z "$includedir" ; then
- CPPFLAGS="$CPPFLAGS -I$includedir"
- fi
- # note: $X_CFLAGS includes $x_includes
- CPPFLAGS="$CPPFLAGS $X_CFLAGS"
-
- if test \! -z "$libdir" ; then
- LDFLAGS="$LDFLAGS -L$libdir"
- fi
- # note: $X_LIBS includes $x_libraries
- LDFLAGS="$LDFLAGS $X_LIBS $X_EXTRA_LIBS"
-
- CPPFLAGS=`eval eval eval eval eval eval eval eval eval echo $CPPFLAGS`
- LDFLAGS=`eval eval eval eval eval eval eval eval eval echo $LDFLAGS`
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gdk_pixbuf_xlib_init in -lc" >&5
-printf %s "checking for gdk_pixbuf_xlib_init in -lc... " >&6; }
-if test ${ac_cv_lib_c_gdk_pixbuf_xlib_init+y}
-then :
- printf %s "(cached) " >&6
-else $as_nop
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lc $ac_gdk_pixbuf_config_libs -lX11 -lXext -lm $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-/* Override any GCC internal prototype to avoid an error.
- Use char because int might match the return type of a GCC
- builtin and then its argument prototype would still apply. */
-char gdk_pixbuf_xlib_init ();
-int
-main (void)
-{
-return gdk_pixbuf_xlib_init ();
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"
-then :
- ac_cv_lib_c_gdk_pixbuf_xlib_init=yes
-else $as_nop
- ac_cv_lib_c_gdk_pixbuf_xlib_init=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.beam \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_c_gdk_pixbuf_xlib_init" >&5
-printf "%s\n" "$ac_cv_lib_c_gdk_pixbuf_xlib_init" >&6; }
-if test "x$ac_cv_lib_c_gdk_pixbuf_xlib_init" = xyes
-then :
- have_gdk_pixbuf=yes
- gdk_pixbuf_halfassed=no
-fi
-
- CPPFLAGS="$ac_save_CPPFLAGS"
- LDFLAGS="$ac_save_LDFLAGS"
-# LIBS="$ac_save_LIBS"
-
- fi
fi
if test "$have_gdk_pixbuf" = yes; then
fi
fi
+# Now that we have checked for gdk_pixbuf, check for gdk_pixbuf_xlib
+# separately, since it has fallen out of fashion in recent years.
+#
+#have_gdk_pixbuf_xlib=no
+#gdk_pixbuf_xlib_halfassed=no
+#if test "$with_gdk_pixbuf" = yes -a "$have_gdk_pixbuf" = yes; then
+#
+# have_gdk_pixbuf_xlib=no
+# pkgs="$pixbuf_pkgs"
+# ok="yes"
+# pkg_check_version gdk-pixbuf-xlib-2.0 2.0.0
+# pkg_check_version gdk-pixbuf-2.0 2.0.0
+# have_gdk_pixbuf_xlib="$ok"
+# pixbuf_xlib_pkgs="$pkgs"
+#
+# if test "$have_gdk_pixbuf_xlib" = yes; then
+# AC_CACHE_CHECK([for gdk-pixbuf-xlib includes],
+# ac_cv_gdk_pixbuf_xlib_config_cflags,
+# [ac_cv_gdk_pixbuf_xlib_config_cflags=`$pkg_config --cflags $pkgs`])
+# AC_CACHE_CHECK([for gdk-pixbuf-xlib libs],
+# ac_cv_gdk_pixbuf_xlib_config_libs,
+# [ac_cv_gdk_pixbuf_xlib_config_libs=`$pkg_config --libs $pkgs`])
+# fi
+#
+# ac_gdk_pixbuf_xlib_config_cflags=$ac_cv_gdk_pixbuf_xlib_config_cflags
+# ac_gdk_pixbuf_xlib_config_libs=$ac_cv_gdk_pixbuf_xlib_config_libs
+#
+# if test "$have_gdk_pixbuf_xlib" = yes; then
+# #
+# # we appear to have pixbuf_xlib; check for headers/libs to be sure.
+# #
+# ac_save_gdk_pixbuf_xlib_CPPFLAGS="$CPPFLAGS"
+# CPPFLAGS="$CPPFLAGS $ac_gdk_pixbuf_xlib_config_cflags"
+# have_gdk_pixbuf_xlib=no
+# gdk_pixbuf_xlib_halfassed=yes
+# AC_CHECK_X_HEADER(gdk-pixbuf-xlib/gdk-pixbuf-xlib.h,
+# [have_gdk_pixbuf_xlib=yes
+# gdk_pixbuf_xlib_halfassed=no])
+# CPPFLAGS="$ac_save_gdk_pixbuf_xlib_CPPFLAGS"
+# fi
+#
+# if test "$have_gdk_pixbuf_xlib" = yes; then
+# # we have the headers, now check for the libraries
+# have_gdk_pixbuf_xlib=no
+# gdk_pixbuf_xlib_halfassed=yes
+#
+# AC_MSG_RESULT(checking for gdk_pixbuf_xlib usability...)
+# AC_CHECK_X_LIB(c, gdk_pixbuf_xlib_init,
+# [have_gdk_pixbuf_xlib=yes
+# gdk_pixbuf_xlib_halfassed=no],,
+# $ac_gdk_pixbuf_xlib_config_libs -lX11 -lXext -lm)
+# fi
+#
+# if test "$have_gdk_pixbuf_xlib" = yes; then
+# INCLUDES="$INCLUDES $ac_gdk_pixbuf_xlib_config_cflags"
+# PNG_LIBS="$ac_gdk_pixbuf_xlib_config_libs"
+# AC_DEFINE(HAVE_GDK_PIXBUF_XLIB)
+# else
+# AC_MSG_RESULT(checking for gdk_pixbuf_xlib usability... no)
+# fi
+#fi
+
###############################################################################
#
# Check for -lXft
warnL "GTK was found, but $gtk_halfassed_lib was not, so GTK"
warn2 "can't be used."
CONF_STATUS=1
-
- if ( echo $gtk_halfassed_lib | grep -qi pixbuf-xlib ); then
- echo ''
- warn2 "Recently, some distros have stopped distributing"
- warn2 "gdk-pixbuf-xlib entirely. So good luck with that."
- fi
-
fi
motif_warn2() {
CONF_STATUS=1
fi
-if test "$have_gdk_pixbuf" = no -o "$gdk_pixbuf_halfassed" = yes || \
- test "$have_gdk_pixbuf" = no ; then
+if test "$have_gdk_pixbuf" = no -o "$gdk_pixbuf_halfassed" = yes ; then
if test "$with_gdk_pixbuf_req" = yes ; then
true
warn2 'configure.'
fi
+#if test "$have_gdk_pixbuf" = yes -a "$have_gdk_pixbuf_xlib" = no ; then
+#
+# warnL 'The GDK-Pixbuf-Xlib library was not found.'
+#
+# if test "$gdk_pixbuf_xlib_halfassed" = yes ; then halfassery ; fi
+# if test "$have_png" = yes ; then
+# echo ''
+# warn2 'The PNG library is being used instead.'
+# fi
+#
+# echo ''
+# warn2 'Some of the demos will not use images as much as they could.'
+# warn2 'You should consider installing GDK-Pixbuf-Xlib and re-running'
+# warn2 'configure.'
+# echo ''
+# warn2 "Recently, some distros have stopped distributing"
+# warn2 "GDK-Pixbuf-Xlib entirely. So good luck with that."
+#fi
+
if test "$have_jpeg" = no ; then
if test "$with_jpeg_req" = yes ; then
warnL 'Use of libjpeg was requested, but it was not found.'
###############################################################################
AH_TOP([
-/* xscreensaver, Copyright © 1991-2021 Jamie Zawinski.
+/* xscreensaver, Copyright © 1991-2022 Jamie Zawinski.
* Generate this file by running 'configure' rather than editing it by hand.
*/
])
[Define this if you have the XmComboBox Motif 2.0 widget.])
AH_TEMPLATE([HAVE_GTK],
- [Define this if you have Gtk])
-AH_TEMPLATE([HAVE_GTK2],
[Define this if you have Gtk 2.x.])
AH_TEMPLATE([HAVE_XML],
[Define this if you have the XML library.])
AH_TEMPLATE([HAVE_GDK_PIXBUF],
- [Define this if you have GDK_Pixbuf.])
+ [Define this if you have GDK-Pixbuf.])
+AH_TEMPLATE([HAVE_GDK_PIXBUF_XLIB],
+ [Define this if you have GDK-Pixbuf-Xlib.])
AH_TEMPLATE([HAVE_GDK_PIXBUF_APPLY_EMBEDDED_ORIENTATION],
[Define this if you have the gdk_pixbuf_apply_embedded_orientation
#
###############################################################################
+# Note: In the decades since I wrote this, PKG_CHECK_MODULES came into
+# existence, which could probably simplify the following quite a bit.
+
AC_PATH_TOOL(pkg_config, pkg-config)
if test -z "$pkg_config" ; then
if test "$with_gtk" = yes; then
have_gtk=no
+ pkgs=''
ok="yes"
- pkg_check_version gtk+-2.0 2.22.0 ; ac_gtk_version_string="$vers"
- pkg_check_version gmodule-2.0 2.0.0
- pkg_check_version libxml-2.0 2.4.6
- pkg_check_version gdk-pixbuf-2.0 2.0.0
- pkg_check_version gdk-pixbuf-xlib-2.0 2.0.0
+ pkg_check_version gtk+-3.0 2.22.0 ; ac_gtk_version_string="$vers"
+ pkg_check_version gmodule-2.0 2.0.0
+ pkg_check_version libxml-2.0 2.4.6
+ pkg_check_version gdk-pixbuf-2.0 2.0.0
have_gtk="$ok"
+ gtk_pkgs="$pkgs"
if test "$have_gtk" = no; then
if test -n "$ac_gtk_version_string" ; then
INCLUDES="$INCLUDES $ac_gtk_config_cflags"
GTK_LIBS="$GTK_LIBS $ac_gtk_config_libs"
AC_DEFINE(HAVE_GTK)
- AC_DEFINE(HAVE_GTK2)
AC_DEFINE(HAVE_XML)
fi
+
+ if test "$have_gtk" = yes; then
+ AC_CACHE_CHECK([for Glib resource compiler], ac_cv_glib_res,
+ [ac_cv_glib_res=`$pkg_config --variable=glib_compile_resources gio-2.0`])
+ GLIB_COMPILE_RESOURCES="$ac_cv_glib_res"
+ fi
+
fi
###############################################################################
have_gdk_pixbuf=no
+have_gdk_pixbuf_xlib=no
with_gdk_pixbuf_req=unspecified
AC_ARG_WITH(pixbuf,
[ --with-pixbuf Include support for the GDK-Pixbuf library, which
pkgs=''
ok="yes"
-
- pkg_check_version gdk-pixbuf-2.0 2.0.0
- pkg_check_version gdk-pixbuf-xlib-2.0 2.0.0
- pkg_check_version gio-2.0 2.0.0
+ pkg_check_version gdk-pixbuf-2.0 2.0.0
+ pkg_check_version gio-2.0 2.0.0
have_gdk_pixbuf="$ok"
+ pixbuf_pkgs="$pkgs"
if test "$have_gdk_pixbuf" = yes; then
AC_CACHE_CHECK([for gdk-pixbuf includes], ac_cv_gdk_pixbuf_config_cflags,
#
ac_save_gdk_pixbuf_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS $ac_gdk_pixbuf_config_cflags"
-
have_gdk_pixbuf=no
-
- # check for header A...
AC_CHECK_X_HEADER(gdk-pixbuf/gdk-pixbuf.h, [have_gdk_pixbuf=yes])
-
- # if that worked, check for header B...
- if test "$have_gdk_pixbuf" = yes; then
- have_gdk_pixbuf=no
- gdk_pixbuf_halfassed=yes
- AC_CHECK_X_HEADER(gdk-pixbuf/gdk-pixbuf-xlib.h,
- [have_gdk_pixbuf=yes
- gdk_pixbuf_halfassed=no])
-
- # yay, it has a new name in Gtk 2.x...
- if test "$have_gdk_pixbuf" = no; then
- have_gdk_pixbuf=no
- gdk_pixbuf_halfassed=yes
- AC_CHECK_X_HEADER(gdk-pixbuf-xlib/gdk-pixbuf-xlib.h,
- [have_gdk_pixbuf=yes
- gdk_pixbuf_halfassed=no])
- fi
- fi
CPPFLAGS="$ac_save_gdk_pixbuf_CPPFLAGS"
fi
if test "$have_gdk_pixbuf" = yes; then
# we have the headers, now check for the libraries
have_gdk_pixbuf=no
- gdk_pixbuf_halfassed=yes
-
AC_MSG_RESULT(checking for gdk_pixbuf usability...)
-
- # library A...
AC_CHECK_X_LIB(c, gdk_pixbuf_new_from_file, [have_gdk_pixbuf=yes],,
$ac_gdk_pixbuf_config_libs -lX11 -lXext -lm)
- # library B...
- if test "$have_gdk_pixbuf" = yes; then
- have_gdk_pixbuf=no
- AC_CHECK_X_LIB(c, gdk_pixbuf_xlib_init,
- [have_gdk_pixbuf=yes
- gdk_pixbuf_halfassed=no],,
- $ac_gdk_pixbuf_config_libs -lX11 -lXext -lm)
- fi
fi
if test "$have_gdk_pixbuf" = yes; then
fi
+# Now that we have checked for gdk_pixbuf, check for gdk_pixbuf_xlib
+# separately, since it has fallen out of fashion in recent years.
+#
+#have_gdk_pixbuf_xlib=no
+#gdk_pixbuf_xlib_halfassed=no
+#if test "$with_gdk_pixbuf" = yes -a "$have_gdk_pixbuf" = yes; then
+#
+# have_gdk_pixbuf_xlib=no
+# pkgs="$pixbuf_pkgs"
+# ok="yes"
+# pkg_check_version gdk-pixbuf-xlib-2.0 2.0.0
+# pkg_check_version gdk-pixbuf-2.0 2.0.0
+# have_gdk_pixbuf_xlib="$ok"
+# pixbuf_xlib_pkgs="$pkgs"
+#
+# if test "$have_gdk_pixbuf_xlib" = yes; then
+# AC_CACHE_CHECK([for gdk-pixbuf-xlib includes],
+# ac_cv_gdk_pixbuf_xlib_config_cflags,
+# [ac_cv_gdk_pixbuf_xlib_config_cflags=`$pkg_config --cflags $pkgs`])
+# AC_CACHE_CHECK([for gdk-pixbuf-xlib libs],
+# ac_cv_gdk_pixbuf_xlib_config_libs,
+# [ac_cv_gdk_pixbuf_xlib_config_libs=`$pkg_config --libs $pkgs`])
+# fi
+#
+# ac_gdk_pixbuf_xlib_config_cflags=$ac_cv_gdk_pixbuf_xlib_config_cflags
+# ac_gdk_pixbuf_xlib_config_libs=$ac_cv_gdk_pixbuf_xlib_config_libs
+#
+# if test "$have_gdk_pixbuf_xlib" = yes; then
+# #
+# # we appear to have pixbuf_xlib; check for headers/libs to be sure.
+# #
+# ac_save_gdk_pixbuf_xlib_CPPFLAGS="$CPPFLAGS"
+# CPPFLAGS="$CPPFLAGS $ac_gdk_pixbuf_xlib_config_cflags"
+# have_gdk_pixbuf_xlib=no
+# gdk_pixbuf_xlib_halfassed=yes
+# AC_CHECK_X_HEADER(gdk-pixbuf-xlib/gdk-pixbuf-xlib.h,
+# [have_gdk_pixbuf_xlib=yes
+# gdk_pixbuf_xlib_halfassed=no])
+# CPPFLAGS="$ac_save_gdk_pixbuf_xlib_CPPFLAGS"
+# fi
+#
+# if test "$have_gdk_pixbuf_xlib" = yes; then
+# # we have the headers, now check for the libraries
+# have_gdk_pixbuf_xlib=no
+# gdk_pixbuf_xlib_halfassed=yes
+#
+# AC_MSG_RESULT(checking for gdk_pixbuf_xlib usability...)
+# AC_CHECK_X_LIB(c, gdk_pixbuf_xlib_init,
+# [have_gdk_pixbuf_xlib=yes
+# gdk_pixbuf_xlib_halfassed=no],,
+# $ac_gdk_pixbuf_xlib_config_libs -lX11 -lXext -lm)
+# fi
+#
+# if test "$have_gdk_pixbuf_xlib" = yes; then
+# INCLUDES="$INCLUDES $ac_gdk_pixbuf_xlib_config_cflags"
+# PNG_LIBS="$ac_gdk_pixbuf_xlib_config_libs"
+# AC_DEFINE(HAVE_GDK_PIXBUF_XLIB)
+# else
+# AC_MSG_RESULT(checking for gdk_pixbuf_xlib usability... no)
+# fi
+#fi
+
+
###############################################################################
#
# Check for -lXft
AC_SUBST(SETCAP_HACKS)
AC_SUBST(INSTALL_DIRS)
AC_SUBST(INSTALL_PAM)
+AC_SUBST(GLIB_COMPILE_RESOURCES)
AC_SUBST(HAVE_PAM_FAIL_DELAY)
AC_SUBST(COMMENT_PAM_CHECK_ACCOUNT)
AC_SUBST(NEW_LOGIN_COMMAND)
warnL "GTK was found, but $gtk_halfassed_lib was not, so GTK"
warn2 "can't be used."
CONF_STATUS=1
-
- if ( echo $gtk_halfassed_lib | grep -qi pixbuf-xlib ); then
- echo ''
- warn2 "Recently, some distros have stopped distributing"
- warn2 "gdk-pixbuf-xlib entirely. So good luck with that."
- fi
-
fi
motif_warn2() {
CONF_STATUS=1
fi
-if test "$have_gdk_pixbuf" = no -o "$gdk_pixbuf_halfassed" = yes || \
- test "$have_gdk_pixbuf" = no ; then
+if test "$have_gdk_pixbuf" = no -o "$gdk_pixbuf_halfassed" = yes ; then
if test "$with_gdk_pixbuf_req" = yes ; then
true
fi
+#if test "$have_gdk_pixbuf" = yes -a "$have_gdk_pixbuf_xlib" = no ; then
+#
+# warnL 'The GDK-Pixbuf-Xlib library was not found.'
+#
+# if test "$gdk_pixbuf_xlib_halfassed" = yes ; then halfassery ; fi
+# if test "$have_png" = yes ; then
+# echo ''
+# warn2 'The PNG library is being used instead.'
+# fi
+#
+# echo ''
+# warn2 'Some of the demos will not use images as much as they could.'
+# warn2 'You should consider installing GDK-Pixbuf-Xlib and re-running'
+# warn2 'configure.'
+# echo ''
+# warn2 "Recently, some distros have stopped distributing"
+# warn2 "GDK-Pixbuf-Xlib entirely. So good luck with that."
+#fi
+
+
if test "$have_jpeg" = no ; then
if test "$with_jpeg_req" = yes ; then
warnL 'Use of libjpeg was requested, but it was not found.'
+++ /dev/null
-# If you're debugging xscreensaver and you are running a virtual root window
-# manager, you'd better let the process handle these signals: it remaps the
-# virtual root window when they arrive. If you don't do this, your window
-# manager will be hosed.
-#
-# Also, gdb copes badly with breakpoints in functions that are called on the
-# other side of a fork(). The Trace/BPT traps cause the spawned process to
-# die.
-#
-#handle 1 pass nostop
-#handle 3 pass nostop
-#handle 4 pass nostop
-#handle 6 pass nostop
-#handle 7 pass nostop
-#handle 8 pass nostop
-#handle 9 pass nostop
-#handle 10 pass nostop
-#handle 11 pass nostop
-#handle 12 pass nostop
-#handle 13 pass nostop
-#handle 15 pass nostop
-#handle 19 pass nostop
-set env MallocGuardEdges 1
-set env MallocPreScribble 1
-set env MallocScribble 1
-b exit
-set args -debug
GTK_APPDIR = $(GTK_DATADIR)/applications
GTK_ICONDIR = $(GTK_DATADIR)/pixmaps
GTK_SHAREDIR = $(GTK_DATADIR)/xscreensaver
-GTK_UIDIR = $(GTK_SHAREDIR)/ui
+UPDATE_ICON_CACHE = gtk-update-icon-cache
+GLIB_COMPILE_RESOURCES = @GLIB_COMPILE_RESOURCES@
HACKDIR = @HACKDIR@
HACK_CONF_DIR = @HACK_CONF_DIR@
ICON_SRC = $(UTILS_SRC)/images
LOGO = $(ICON_SRC)/logo-512.png
-GTK_ICONS = $(ICON_SRC)/screensaver-*.png
UTILS_SRC = $(srcdir)/../utils
UTILS_BIN = ../utils
$(UTILS_BIN)/logo.o \
$(UTILS_BIN)/minixpm.o
AUTH_LIBS = $(LIBS_PRE) $(XFT_LIBS) $(XINPUT_LIBS) $(XINERAMA_LIBS) \
- @SAVER_LIBS@ -lXt -lX11 -lXext -lXi \
+ $(XDPMS_LIBS) @SAVER_LIBS@ -lXt -lX11 -lXext -lXi \
@PASSWD_LIBS@ $(LIBS_POST) $(INTL_LIBS)
SYSTEMD_DEFS =
GTK_DEFS = -DHACK_CONFIGURATION_PATH='"$(HACK_CONF_DIR)"' \
-DDEFAULT_PATH_PREFIX='"@HACKDIR@"' \
- -DDEFAULT_ICONDIR='"$(GTK_UIDIR)"' \
-DLOCALEDIR=\"$(localedir)\" \
-I$(ICON_SRC)
GTK_SRCS = demo-Gtk.c demo-Gtk-conf.c
-GTK_OBJS = demo-Gtk.o demo-Gtk-conf.o \
+GTK_OBJS = demo-Gtk.o demo-Gtk-conf.o demo-Gtk-resources.o \
blurb.o exec.o prefs.o prefsw.o dpms.o remote.o screens.o \
clientmsg.o atoms.o \
$(UTILS_BIN)/xmu.o \
EXTRAS = README Makefile.in \
XScreenSaver.ad.in XScreenSaver-Xm.ad xscreensaver.pam.in \
- xscreensaver.ui xscreensaver-settings.desktop.in \
- xscreensaver.desktop.in xscreensaver.service.in .gdbinit
+ demo.ui prefs.ui gresource.xml xscreensaver.desktop.in \
+ xscreensaver-settings.desktop.in xscreensaver.service.in
TARFILES = $(DAEMON_SRCS) $(GFX_SRCS) $(AUTH_SRCS) $(SYSTEMD_SRCS) \
$(CMD_SRCS) $(GTK_SRCS) $(MOTIF_SRCS) $(PWENT_SRCS) \
# xscreensaver.service
# into /usr/share/xscreensaver/
+# But maybe it should instead be installed as:
+# $(prefix)/share/dbus-1/system-services/org.jwz.xscreensaver.service
+# Or would that make it be enabled by default?
+#
install-gnome:: xscreensaver.service
@if [ ! -d "$(install_prefix)$(GTK_SHAREDIR)" ]; then \
echo $(INSTALL_DIRS) "$(install_prefix)$(GTK_SHAREDIR)" ;\
$(install_prefix)$(GTK_ICONDIR)/$$target ;\
fi
-# ../utils/images/screensaver-*.png
-# into /usr/share/xscreensaver/ui/
-install-gnome::
- @if [ "$(GTK_DATADIR)" != "" ]; then \
- if [ ! -d "$(install_prefix)$(GTK_UIDIR)" ]; then \
- echo $(INSTALL_DIRS) "$(install_prefix)$(GTK_UIDIR)" ;\
- $(INSTALL_DIRS) "$(install_prefix)$(GTK_UIDIR)" ;\
- fi ;\
- for target in $(GTK_ICONS) ; do \
- dest=`echo $$target | sed 's@^.*/@@'` ;\
- echo $(INSTALL_DATA) $$target \
- $(install_prefix)$(GTK_UIDIR)/$$dest ;\
- $(INSTALL_DATA) $$target \
- $(install_prefix)$(GTK_UIDIR)/$$dest ;\
- done ;\
- fi
-
-# xscreensaver.ui
-# into /usr/share/xscreensaver/ui/
-install-gnome:: xscreensaver.ui
- @if [ "$(GTK_DATADIR)" != "" ]; then \
- if [ ! -d "$(install_prefix)$(GTK_UIDIR)" ]; then \
- echo $(INSTALL_DIRS) "$(install_prefix)$(GTK_UIDIR)" ;\
- $(INSTALL_DIRS) "$(install_prefix)$(GTK_UIDIR)" ;\
- fi ;\
- target=xscreensaver.ui ;\
- echo $(INSTALL_DATA) $(srcdir)/$$target \
- $(install_prefix)$(GTK_UIDIR)/$$target ;\
- if $(INSTALL_DATA) $(srcdir)/$$target \
- $(install_prefix)$(GTK_UIDIR)/$$target ;\
- then true ;\
- else \
- e=echo ; \
- $$e "" ;\
- $$e " ####################################################################";\
- $$e " Warning: unable to install $$target into" ;\
- $$e " $(install_prefix)$(GTK_UIDIR)/." ;\
- $$e " Without this file, xscreensaver-settings will not" ;\
- $$e " be able to run properly." ;\
- $$e " ####################################################################";\
- $$e "" ;\
- exit 1 ; \
- fi ; \
- fi
-
install-gnome:: uninstall-old-gnome-icons
- -update-icon-caches $(install_prefix)$(GTK_DATADIR)/icons
- -update-icon-caches $(install_prefix)$(GTK_ICONDIR)
-# -update-icon-caches $(install_prefix)$(GTK_DATADIR)/pixmaps
+install-gnome:: update-icon-caches
+
+update-icon-caches::
+ @for f in /usr/share/icons/index.theme \
+ /usr/share/icons/*/index.theme \
+ /usr/share/pixmaps/index.theme \
+ /usr/share/pixmaps/*/index.theme \
+ ; do \
+ if [ -f $$f ]; then \
+ f=`dirname $$f` ;\
+ echo $(UPDATE_ICON_CACHE) --force --quiet $$f ;\
+ $(UPDATE_ICON_CACHE) --force --quiet $$f ;\
+ fi ;\
+ done
# xscreensaver.desktop
# xscreensaver-settings.desktop
echo rm -f $(install_prefix)$(GTK_APPDIR)/$$old ;\
rm -f $(install_prefix)$(GTK_APPDIR)/$$old ;\
fi ;\
- for f in xscreensaver.desktop xscreensaver-settings.desktop; do ;\
+ for f in xscreensaver.desktop xscreensaver-settings.desktop; do \
echo rm -f $(install_prefix)$(GTK_APPDIR)/$$f ;\
rm -f $(install_prefix)$(GTK_APPDIR)/$$f ;\
done ;\
fi
-# xscreensaver.xpm
-# into /usr/share/pixmaps/
+# xscreensaver.xpm (pre-2022)
+# from /usr/share/pixmaps/
uninstall-gnome::
@if [ "$(GTK_ICONDIR)" != "" ]; then \
target=xscreensaver.xpm ;\
rm -f $(install_prefix)$(GTK_ICONDIR)/$$target ;\
fi
-# ../utils/images/screensaver-*.png
-# into /usr/share/xscreensaver/ui/
+# /usr/share/xscreensaver/ui/*.png and *.ui no longer used as of 2022, 6.05.
uninstall-gnome::
- @if [ "$(GTK_DATADIR)" != "" ]; then \
- for target in $(GTK_ICONS) ; do \
- dest=`echo $$target | sed 's@^.*/@@'` ;\
- echo rm -f $(install_prefix)$(GTK_UIDIR)/$$dest ;\
- rm -f $(install_prefix)$(GTK_UIDIR)/$$dest ;\
- done ;\
- fi
+ @if [ "$(GTK_ICONDIR)" != "" ]; then \
+ echo rm -rf $(install_prefix)$(GTK_SHAREDIR)/ui ;\
+ rm -rf $(install_prefix)$(GTK_SHAREDIR)/ui ;\
+ fi
# What is all this crap with the wrong logo?
# /usr/share/icons/nuoveXT2/16x16/apps/xscreensaver.png through
fi ;\
done
-# xscreensaver.ui
-# into /usr/share/xscreensaver/ui/
-uninstall-gnome::
- @if [ "$(GTK_DATADIR)" != "" ]; then \
- for target in xscreensaver.ui xscreensaver-demo.ui ; do \
- echo rm -f $(install_prefix)$(GTK_UIDIR)/$$target ;\
- rm -f $(install_prefix)$(GTK_UIDIR)/$$target ;\
- done ;\
- rmdir "$(GTK_UIDIR)" ;\
- rmdir "$(GTK_DATADIR)/xscreensaver" ;\
- exit 0 ;\
- fi
-
-# /usr/share/xscreensaver/glade/ no longer used
+# /usr/share/xscreensaver/glade/ no longer used as of 2022.
uninstall-gnome::
-rm -rf $(GTK_DATADIR)/xscreensaver/glade
demo-Gtk-conf.o: demo-Gtk-conf.c
$(CC) -c $(CC_ALL) $(GTK_DEFS) $<
+GCRARGS = --sourcedir=$(srcdir) --sourcedir=$(ICON_SRC) --generate-source
+demo-Gtk-resources.c: gresource.xml demo.ui prefs.ui
+ $(GLIB_COMPILE_RESOURCES) gresource.xml --target=$@ $(GCRARGS)
+
+GTK_WARNINGS = -Wno-long-long -Wno-c99-extensions -Wno-pedantic
+demo-Gtk-resources.o: demo-Gtk-resources.c
+ $(CC) -c $(CC_ALL) $(GTK_DEFS) $(GTK_WARNINGS) $<
+
xscreensaver-settings-Gtk: $(GTK_OBJS)
$(CC) $(LDFLAGS) -o $@ $(GTK_OBJS) $(GTK_LIBS)
"*textURL: https://en.wikipedia.org/w/index.php?title=Special:NewPages&feed=rss",
"*demoCommand: xscreensaver-settings",
"*helpURL: https://www.jwz.org/xscreensaver/man.html",
-"*loadURL: x-www-browser '%s' || firefox '%s' || chromium-browser '%s'",
-"*manualCommand: xterm -sb -fg black -bg gray75 -T '%s manual' \
- -e /bin/sh -c 'man \"%s\" ; read foo'",
+"*loadURL: gnome-open '%s'",
+"*manualCommand: yelp man:%s || \
+ x-terminal-emulator -t '%s manual' \
+ -e /bin/sh -c \"man %s; read foo\"",
"*dateFormat: %I:%M %p, %a %b %e",
"*newLoginCommand: no-such-login-manager",
"XScreenSaver.pointerHysteresis: 10",
-/* xscreensaver, Copyright © 1991-2021 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright © 1991-2022 Jamie Zawinski <jwz@jwz.org>
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
#include <string.h>
#include <time.h>
+#include <sys/time.h>
const char *progname = "";
int verbose_p = 0;
+/* #define BLURB_CENTISECONDS */
+
const char *
blurb (void)
{
static char buf[255] = { 0 };
struct tm tm;
- time_t now;
+ struct timeval now;
int i;
- now = time ((time_t *) 0);
- localtime_r (&now, &tm);
+# ifdef GETTIMEOFDAY_TWO_ARGS
+ struct timezone tzp;
+ gettimeofday (&now, &tzp);
+# else
+ gettimeofday (&now);
+# endif
+
+ localtime_r (&now.tv_sec, &tm);
i = strlen (progname);
if (i > 40) i = 40;
memcpy (buf, progname, i);
buf[i++] = ':';
buf[i++] = '0' + (tm.tm_sec >= 10 ? tm.tm_sec/10 : 0);
buf[i++] = '0' + (tm.tm_sec % 10);
+
+# ifdef BLURB_CENTISECONDS
+ {
+ int c = now.tv_usec / 10000;
+ buf[i++] = '.';
+ buf[i++] = '0' + (c >= 10 ? c/10 : 0);
+ buf[i++] = '0' + (c % 10);
+ }
+# endif
+
buf[i] = 0;
return buf;
}
find_screensaver_window (Display *dpy, char **version)
{
int nscreens = ScreenCount (dpy);
- int i, screen;
+ int screen;
Window ret = 0;
XErrorHandler old_handler;
Window root = RootWindow (dpy, screen);
Window root2, parent, *kids;
unsigned int nkids;
+ int i = 0;
if (! XQueryTree (dpy, root, &root2, &parent, &kids, &nkids))
abort ();
# pragma GCC diagnostic pop
#endif
+#include "blurb.h"
#include "demo-Gtk-conf.h"
/* Deal with deprecation of direct access to struct fields on the way to GTK3
#endif
-extern const char *blurb (void);
-
-
-const char *hack_configuration_path = HACK_CONFIGURATION_PATH;
-
-static gboolean debug_p = FALSE;
+static gboolean debug_p = FALSE; /* Copied from s->debug_p in parent */
#define MIN_SLIDER_WIDTH 150
static parameter *make_select_option (const char *file, xmlNodePtr);
static void make_parameter_widget (const char *filename,
- parameter *, GtkWidget *);
+ parameter *, GtkWidget *,
+ void (*changed_cb) (GtkWidget *, gpointer),
+ gpointer changed_data);
static void browse_button_cb (GtkButton *button, gpointer user_data);
int nulls = 0;
char *prefix = 0;
-/* fprintf (stderr, "\n## %s\n", p->id);*/
for (opts = p->options; opts; opts = opts->next)
{
parameter *s = (parameter *) opts->data;
/* Helper for make_parameters()
*/
static GList *
-make_parameters_1 (const char *filename, xmlNodePtr node, GtkWidget *parent)
+make_parameters_1 (const char *filename, xmlNodePtr node, GtkWidget *parent,
+ void (*changed_cb) (GtkWidget *, gpointer),
+ gpointer changed_data)
{
GList *list = 0;
if (!strcmp (name, "hgroup") ||
!strcmp (name, "vgroup"))
{
- GtkWidget *box = (*name == 'h'
- ? gtk_hbox_new (FALSE, 0)
- : gtk_vbox_new (FALSE, 0));
+ GtkWidget *box = gtk_box_new (*name == 'h'
+ ? GTK_ORIENTATION_HORIZONTAL
+ : GTK_ORIENTATION_VERTICAL,
+ 0);
GList *list2;
gtk_widget_show (box);
gtk_box_pack_start (GTK_BOX (parent), box, FALSE, FALSE, 0);
- list2 = make_parameters_1 (filename, node->xmlChildrenNode, box);
+ list2 = make_parameters_1 (filename, node->xmlChildrenNode, box,
+ changed_cb, changed_data);
if (list2)
list = g_list_concat (list, list2);
}
if (p)
{
list = g_list_append (list, p);
- make_parameter_widget (filename, p, parent);
+ make_parameter_widget (filename, p, parent,
+ changed_cb, changed_data);
}
}
}
Returns a GList of `parameter' objects.
*/
static GList *
-make_parameters (const char *filename, xmlNodePtr node, GtkWidget *parent)
+make_parameters (const char *filename, xmlNodePtr node, GtkWidget *parent,
+ void (*changed_cb) (GtkWidget *, gpointer),
+ gpointer changed_data)
{
for (; node; node = node->next)
{
if (node->type == XML_ELEMENT_NODE &&
!strcmp ((char *) node->name, "screensaver"))
- return make_parameters_1 (filename, node->xmlChildrenNode, parent);
+ return make_parameters_1 (filename, node->xmlChildrenNode, parent,
+ changed_cb, changed_data);
}
return 0;
}
static void
set_widget_min_width (GtkWidget *w, int width)
{
- GtkRequisition req;
- gtk_widget_size_request (GTK_WIDGET (w), &req);
- if (req.width < width)
+ GtkRequisition min, nat;
+ gtk_widget_get_preferred_size (w, &min, &nat);
+ if (min.width < width)
gtk_widget_set_size_request (GTK_WIDGET (w), width, -1);
}
static GtkWidget *
insert_fake_hbox (GtkWidget *parent)
{
- if (GTK_IS_VBOX (parent))
+ if (gtk_orientable_get_orientation (GTK_ORIENTABLE (parent)) ==
+ GTK_ORIENTATION_VERTICAL)
{
- GtkWidget *hbox = gtk_hbox_new (FALSE, 0);
+ GtkWidget *hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
gtk_box_pack_start (GTK_BOX (parent), hbox, FALSE, FALSE, 4);
gtk_widget_show (hbox);
return hbox;
static void
-link_atk_label_to_widget(GtkWidget *label, GtkWidget *widget)
+link_atk_label_to_widget (GtkWidget *label, GtkWidget *widget)
{
- AtkObject *atk_label = gtk_widget_get_accessible (label);
- AtkObject *atk_widget = gtk_widget_get_accessible (widget);
+ AtkObject *atk_label = gtk_widget_get_accessible (label);
+ AtkObject *atk_widget = gtk_widget_get_accessible (widget);
- atk_object_add_relationship (atk_label, ATK_RELATION_LABEL_FOR,
- atk_widget);
- atk_object_add_relationship (atk_widget, ATK_RELATION_LABELLED_BY,
- atk_label);
+ atk_object_add_relationship (atk_label, ATK_RELATION_LABEL_FOR,
+ atk_widget);
+ atk_object_add_relationship (atk_widget, ATK_RELATION_LABELLED_BY,
+ atk_label);
}
/* Given a `parameter' struct, allocates an appropriate GtkWidget for it,
`parent' must be a GtkBox.
*/
static void
-make_parameter_widget (const char *filename, parameter *p, GtkWidget *parent)
+make_parameter_widget (const char *filename, parameter *p, GtkWidget *parent,
+ void (*changed_cb) (GtkWidget *, gpointer data),
+ gpointer changed_data)
{
const char *label = (char *) p->label;
if (p->widget) return;
GtkWidget *w = gtk_label_new (_(label));
link_atk_label_to_widget (w, entry);
gtk_label_set_justify (GTK_LABEL (w), GTK_JUSTIFY_RIGHT);
- gtk_misc_set_alignment (GTK_MISC (w), 1.0, 0.5);
+ gtk_label_set_xalign (GTK_LABEL (w), 1.0);
+ gtk_label_set_yalign (GTK_LABEL (w), 0.5);
set_widget_min_width (GTK_WIDGET (w), MIN_LABEL_WIDTH);
gtk_widget_show (w);
gtk_box_pack_start (GTK_BOX (parent), w, FALSE, FALSE, 4);
if (p->string)
gtk_entry_set_text (GTK_ENTRY (p->widget), (char *) p->string);
gtk_box_pack_start (GTK_BOX (parent), p->widget, FALSE, FALSE, 4);
+ g_signal_connect (p->widget, "changed", G_CALLBACK (changed_cb),
+ changed_data);
break;
}
case FILENAME:
gtk_widget_show (button);
p->widget = entry;
- gtk_signal_connect (GTK_OBJECT (button),
- "clicked", GTK_SIGNAL_FUNC (browse_button_cb),
- (gpointer) entry);
+ g_signal_connect (button, "clicked", G_CALLBACK (browse_button_cb),
+ (gpointer) entry);
gtk_label_set_justify (GTK_LABEL (L), GTK_JUSTIFY_RIGHT);
- gtk_misc_set_alignment (GTK_MISC (L), 1.0, 0.5);
+ gtk_label_set_xalign (GTK_LABEL (L), 1.0);
+ gtk_label_set_yalign (GTK_LABEL (L), 0.5);
set_widget_min_width (GTK_WIDGET (L), MIN_LABEL_WIDTH);
gtk_widget_show (L);
gtk_box_pack_start (GTK_BOX (parent), L, FALSE, FALSE, 4);
gtk_box_pack_start (GTK_BOX (parent), entry, TRUE, TRUE, 4);
gtk_box_pack_start (GTK_BOX (parent), button, FALSE, FALSE, 4);
+ g_signal_connect (p->widget, "changed",
+ G_CALLBACK (changed_cb), changed_data);
break;
}
case SLIDER:
{
GtkAdjustment *adj = make_adjustment (filename, p);
- GtkWidget *scale = gtk_hscale_new (adj);
+ GtkWidget *scale = gtk_scale_new (GTK_ORIENTATION_HORIZONTAL, adj);
GtkWidget *labelw = 0;
if (label)
labelw = gtk_label_new (_(label));
link_atk_label_to_widget (labelw, scale);
gtk_label_set_justify (GTK_LABEL (labelw), GTK_JUSTIFY_LEFT);
- gtk_misc_set_alignment (GTK_MISC (labelw), 0.0, 0.5);
+ gtk_label_set_xalign (GTK_LABEL (labelw), 0.0);
+ gtk_label_set_yalign (GTK_LABEL (labelw), 0.5);
set_widget_min_width (GTK_WIDGET (labelw), MIN_LABEL_WIDTH);
gtk_widget_show (labelw);
gtk_box_pack_start (GTK_BOX (parent), labelw, FALSE, FALSE, 2);
GtkWidget *w = gtk_label_new (_((char *) p->low_label));
link_atk_label_to_widget (w, scale);
gtk_label_set_justify (GTK_LABEL (w), GTK_JUSTIFY_RIGHT);
- gtk_misc_set_alignment (GTK_MISC (w), 1.0, 0.5);
+ gtk_label_set_xalign (GTK_LABEL (w), 1.0);
+ gtk_label_set_yalign (GTK_LABEL (w), 0.5);
set_widget_min_width (GTK_WIDGET (w), MIN_LABEL_WIDTH);
gtk_widget_show (w);
gtk_box_pack_start (GTK_BOX (parent), w, FALSE, FALSE, 4);
}
gtk_scale_set_value_pos (GTK_SCALE (scale), GTK_POS_BOTTOM);
- /* This is only in debug mode since it is wrong for "ratio" sliders. */
- gtk_scale_set_draw_value (GTK_SCALE (scale), debug_p);
gtk_scale_set_digits (GTK_SCALE (scale), (p->integer_p ? 0 : 2));
set_widget_min_width (GTK_WIDGET (scale), MIN_SLIDER_WIDTH);
+ /* We can't show the value as it is wrong for ratio and inverted
+ sliders. */
+ gtk_scale_set_draw_value (GTK_SCALE (scale), FALSE);
+
gtk_box_pack_start (GTK_BOX (parent), scale, FALSE, FALSE, 4);
gtk_widget_show (scale);
GtkWidget *w = gtk_label_new (_((char *) p->high_label));
link_atk_label_to_widget (w, scale);
gtk_label_set_justify (GTK_LABEL (w), GTK_JUSTIFY_LEFT);
- gtk_misc_set_alignment (GTK_MISC (w), 0.0, 0.5);
+ gtk_label_set_xalign (GTK_LABEL (w), 0.0);
+ gtk_label_set_yalign (GTK_LABEL (w), 0.5);
set_widget_min_width (GTK_WIDGET (w), MIN_LABEL_WIDTH);
gtk_widget_show (w);
gtk_box_pack_start (GTK_BOX (parent), w, FALSE, FALSE, 4);
}
p->widget = scale;
+ g_signal_connect (adj, "value-changed",
+ G_CALLBACK (changed_cb), changed_data);
break;
}
case SPINBUTTON:
GtkWidget *w = gtk_label_new (_(label));
link_atk_label_to_widget (w, spin);
gtk_label_set_justify (GTK_LABEL (w), GTK_JUSTIFY_RIGHT);
- gtk_misc_set_alignment (GTK_MISC (w), 1.0, 0.5);
+ gtk_label_set_xalign (GTK_LABEL (w), 1.0);
+ gtk_label_set_yalign (GTK_LABEL (w), 0.5);
set_widget_min_width (GTK_WIDGET (w), MIN_LABEL_WIDTH);
gtk_widget_show (w);
parent = insert_fake_hbox (parent);
gtk_box_pack_start (GTK_BOX (parent), spin, FALSE, FALSE, 4);
p->widget = spin;
+ g_signal_connect (adj, "value-changed",
+ G_CALLBACK (changed_cb), changed_data);
break;
}
case BOOLEAN:
parent = insert_fake_hbox (parent);
*/
gtk_box_pack_start (GTK_BOX (parent), p->widget, FALSE, FALSE, 4);
+ g_signal_connect (p->widget, "clicked",
+ G_CALLBACK (changed_cb), changed_data);
break;
}
case SELECT:
{
- GtkWidget *opt = gtk_option_menu_new ();
- GtkWidget *menu = gtk_menu_new ();
+ GtkComboBox *cbox = GTK_COMBO_BOX (gtk_combo_box_new());
+ GtkListStore *model = gtk_list_store_new (1, G_TYPE_STRING);
+ GtkCellRenderer *view = gtk_cell_renderer_text_new();
+ GtkTreeIter iter;
GList *opts;
+ g_object_set (G_OBJECT (cbox), "model", model, NULL);
+ g_object_unref (model);
+ gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (cbox), view, TRUE);
+ gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (cbox), view,
+ "text", 0, NULL);
+
for (opts = p->options; opts; opts = opts->next)
{
parameter *s = (parameter *) opts->data;
- GtkWidget *i = gtk_menu_item_new_with_label (_((char *) s->label));
- gtk_widget_show (i);
- gtk_menu_append (GTK_MENU (menu), i);
+ const char *name = _((char *) s->label);
+ gtk_list_store_append (model, &iter);
+ gtk_list_store_set (model, &iter, 0, name, -1);
}
- gtk_option_menu_set_menu (GTK_OPTION_MENU (opt), menu);
- p->widget = opt;
+ p->widget = GTK_WIDGET (cbox);
parent = insert_fake_hbox (parent);
gtk_box_pack_start (GTK_BOX (parent), p->widget, FALSE, FALSE, 4);
+ g_signal_connect (p->widget, "changed",
+ G_CALLBACK (changed_cb), changed_data);
break;
}
}
}
-\f
-/* File selection.
- Absurdly, there is no GTK file entry widget, only a GNOME one,
- so in order to avoid depending on GNOME in this code, we have
- to do it ourselves.
- */
-
-/* cancel button on GtkFileSelection: user_data unused */
-static void
-file_sel_cancel (GtkWidget *button, gpointer user_data)
-{
- GtkWidget *dialog = button;
- while (GET_PARENT (dialog))
- dialog = GET_PARENT (dialog);
- gtk_widget_destroy (dialog);
-}
-
-/* ok button on GtkFileSelection: user_data is the corresponding GtkEntry */
-static void
-file_sel_ok (GtkWidget *button, gpointer user_data)
-{
- GtkWidget *entry = GTK_WIDGET (user_data);
- GtkWidget *dialog = button;
- const char *path;
-
- while (GET_PARENT (dialog))
- dialog = GET_PARENT (dialog);
- gtk_widget_hide (dialog);
-
- path = gtk_file_selection_get_filename (GTK_FILE_SELECTION (dialog));
- /* apparently one doesn't free `path' */
-
- gtk_entry_set_text (GTK_ENTRY (entry), path);
- gtk_entry_set_position (GTK_ENTRY (entry), strlen (path));
-
- gtk_widget_destroy (dialog);
-}
-
-/* WM close on GtkFileSelection: user_data unused */
-static void
-file_sel_close (GtkWidget *widget, GdkEvent *event, gpointer user_data)
-{
- file_sel_cancel (widget, user_data);
-}
/* "Browse" button: user_data is the corresponding GtkEntry */
static void
browse_button_cb (GtkButton *button, gpointer user_data)
{
- GtkWidget *entry = GTK_WIDGET (user_data);
- const char *text = gtk_entry_get_text (GTK_ENTRY (entry));
- GtkFileSelection *selector =
- GTK_FILE_SELECTION (gtk_file_selection_new (_("Select file.")));
-
- gtk_file_selection_set_filename (selector, text);
- gtk_signal_connect (GTK_OBJECT (selector->ok_button),
- "clicked", GTK_SIGNAL_FUNC (file_sel_ok),
- (gpointer) entry);
- gtk_signal_connect (GTK_OBJECT (selector->cancel_button),
- "clicked", GTK_SIGNAL_FUNC (file_sel_cancel),
- (gpointer) entry);
- gtk_signal_connect (GTK_OBJECT (selector), "delete_event",
- GTK_SIGNAL_FUNC (file_sel_close),
- (gpointer) entry);
-
- gtk_window_set_modal (GTK_WINDOW (selector), TRUE);
- gtk_widget_show (GTK_WIDGET (selector));
+ GtkEntry *entry = GTK_ENTRY (user_data);
+ GtkWindow *win = GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (button)));
+ const char *ofile = gtk_entry_get_text (entry);
+ char *file = strdup (ofile);
+
+ if (debug_p) fprintf (stderr, "%s: settings browse button\n", blurb());
+ if (file_chooser (win, entry, &file, _("Select file."),
+ debug_p, FALSE, FALSE))
+ {
+ if (debug_p)
+ fprintf (stderr, "%s: file: \"%s\" -> \"%s\n", blurb(), ofile, file);
+ gtk_entry_set_text (entry, file);
+ }
+ free (file);
}
-\f
+
/* Converting to and from command-lines
*/
case SELECT:
if (!p->widget) return 0;
{
- GtkOptionMenu *opt = GTK_OPTION_MENU (p->widget);
- GtkMenu *menu = GTK_MENU (gtk_option_menu_get_menu (opt));
- GtkWidget *selected = gtk_menu_get_active (menu);
- GList *kids = gtk_container_children (GTK_CONTAINER (menu));
- int menu_elt = g_list_index (kids, (gpointer) selected);
- GList *ol = g_list_nth (p->options, menu_elt);
+ GtkComboBox *cbox = GTK_COMBO_BOX (p->widget);
+ int menu_elt = gtk_combo_box_get_active (cbox);
+ GList *ol = (menu_elt >= 0 ? g_list_nth (p->options, menu_elt) : NULL);
parameter *o = (ol ? (parameter *) ol->data : 0);
const char *s;
- if (!o) abort();
- if (o->type != SELECT_OPTION) abort();
- s = (char *) o->arg_set;
- if (s)
- return strdup (s);
- else
- return 0;
+ if (o)
+ {
+ if (o->type != SELECT_OPTION) abort();
+ s = (char *) o->arg_set;
+ if (s)
+ return strdup (s);
+ }
+ return 0;
}
default:
if (p->widget)
if (rest->next) /* pop off the arg to this option */
{
char *s = (char *) rest->next->data;
- /* the next token is the next switch iff it matches "-[a-z]".
+ /* the next token is the next switch if it matches ^-[-a-z]
(To avoid losing on "-x -3.1".)
*/
- if (s && (s[0] != '-' || !isalpha(s[1])))
+ if (! (s &&
+ s[0] == '-' &&
+ (s[1] == '-' || isalpha(s[1]))))
{
value = s;
rest->next->data = 0;
compare_opts (const char *option, const char *value,
const char *template)
{
- int ol = strlen (option);
+ int ol;
char *c;
+ /* -arg and --arg are the same. */
+ if (option[0] == '-' && option[1] == '-') option++;
+ if (template[0] == '-' && template[1] == '-') template++;
+ ol = strlen (option);
+
if (strncmp (option, template, ol))
return FALSE;
}
case SELECT:
{
- gtk_option_menu_set_history (GTK_OPTION_MENU (p->widget),
- GPOINTER_TO_INT(value));
+ GtkComboBox *cbox = GTK_COMBO_BOX (p->widget);
+ gtk_combo_box_set_active (cbox, GPOINTER_TO_INT(value));
break;
}
default:
}
case SELECT:
{
- GtkOptionMenu *opt = GTK_OPTION_MENU (p->widget);
+ GtkComboBox *cbox = GTK_COMBO_BOX (p->widget);
GList *opts;
int selected = 0;
int index;
}
}
- gtk_option_menu_set_history (GTK_OPTION_MENU (opt), selected);
+ gtk_combo_box_set_active (cbox, selected);
break;
}
default:
}
-\f
+
/* Documentation strings
*/
}
-\f
+
/* External interface.
*/
static conf_data *
load_configurator_1 (const char *program, const char *arguments,
+ void (*changed_cb) (GtkWidget *, gpointer),
+ gpointer changed_data,
gboolean verbose_p)
{
- const char *dir = hack_configuration_path;
+ const char *dir = HACK_CONFIGURATION_PATH;
char *base_program;
int L = strlen (dir);
char *file;
/* Parsed the XML file. Now make some widgets. */
- vbox0 = gtk_vbox_new (FALSE, 0);
+ vbox0 = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
gtk_widget_show (vbox0);
- parms = make_parameters (file, doc->xmlRootNode, vbox0);
+ parms = make_parameters (file, doc->xmlRootNode, vbox0,
+ changed_cb, changed_data);
sanity_check_parameters (file, parms);
xmlFreeDoc (doc);
conf_data *
-load_configurator (const char *full_command_line, gboolean verbose_p)
+load_configurator (const char *full_command_line,
+ void (*changed_cb) (GtkWidget *, gpointer),
+ gpointer changed_data,
+ gboolean verbose_p)
{
char *prog;
char *args;
conf_data *cd;
debug_p = verbose_p;
split_command_line (full_command_line, &prog, &args);
- cd = load_configurator_1 (prog, args, verbose_p);
+ cd = load_configurator_1 (prog, args, changed_cb, changed_data, verbose_p);
free (prog);
free (args);
return cd;
int year;
} conf_data;
-extern conf_data *load_configurator (const char *cmd_line, gboolean verbose_p);
+/* Referenced by demo-Gtk.c; defined in demo-Gtk-conf.c.
+ */
+extern conf_data *load_configurator (const char *cmd_line,
+ void (*changed_cb) (GtkWidget *, gpointer),
+ gpointer changed_data,
+ gboolean verbose_p);
extern char *get_configurator_command_line (conf_data *, gboolean default_p);
extern void set_configurator_command_line (conf_data *, const char *cmd_line);
extern void free_conf_data (conf_data *);
-extern const char *hack_configuration_path;
+/* Referenced from demo.ui and prefs.ui; defined in demo-Gtk.c.
+ */
+extern void quit_menu_cb (GtkAction *, gpointer user_data);
+extern void about_menu_cb (GtkAction *, gpointer user_data);
+extern void doc_menu_cb (GtkAction *, gpointer user_data);
+extern void file_menu_cb (GtkAction *, gpointer user_data);
+extern void activate_menu_cb (GtkAction *, gpointer user_data);
+extern void lock_menu_cb (GtkAction *, gpointer user_data);
+extern void kill_menu_cb (GtkAction *, gpointer user_data);
+extern void restart_menu_cb (GtkWidget *, gpointer user_data);
+extern void run_this_cb (GtkButton *, gpointer user_data);
+extern void manual_cb (GtkButton *, gpointer user_data);
+extern void run_next_cb (GtkButton *, gpointer user_data);
+extern void run_prev_cb (GtkButton *, gpointer user_data);
+extern gboolean pref_changed_cb (GtkWidget *, gpointer user_data);
+extern gboolean pref_changed_event_cb (GtkWidget *, GdkEvent *, gpointer data);
+extern gboolean image_text_pref_changed_event_cb (GtkWidget *, GdkEvent *,
+ gpointer user_data);
+extern void mode_menu_item_cb (GtkWidget *, gpointer user_data);
+extern void switch_page_cb (GtkNotebook *, GtkWidget *,
+ gint page_num, gpointer user_data);
+extern void browse_image_dir_cb (GtkButton *, gpointer user_data);
+extern void browse_text_file_cb (GtkButton *, gpointer user_data);
+extern void browse_text_program_cb (GtkButton *, gpointer user_data);
+extern void settings_cb (GtkButton *, gpointer user_data);
+extern void settings_adv_cb (GtkButton *, gpointer user_data);
+extern void settings_std_cb (GtkButton *, gpointer user_data);
+extern void settings_reset_cb (GtkButton *, gpointer user_data);
+extern void settings_switch_page_cb (GtkNotebook *, GtkWidget *,
+ gint page_num, gpointer user_data);
+extern void settings_cancel_cb (GtkWidget *, gpointer user_data);
+extern void settings_ok_cb (GtkWidget *, gpointer user_data);
+extern void preview_theme_cb (GtkWidget *, gpointer user_data);
+
+/* Referenced by demo-Gtk-conf.c; defined in demo-Gtk.c.
+ */
+extern void warning_dialog (GtkWindow *, const char *title, const char *msg);
+extern gboolean file_chooser (GtkWindow *, GtkEntry *, char **retP,
+ const char *title,
+ gboolean verbose_p,
+ gboolean dir_p, gboolean program_p);
#endif /* _DEMO_GTK_CONF_H_ */
#ifdef HAVE_GTK /* whole file */
-#include "blurb.h"
-
-#include <xscreensaver-intl.h>
-
-#include <stdlib.h>
-
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-
-# ifdef __GNUC__
-# define STFU __extension__ /* ignore gcc -pendantic warnings in next sexp */
-# else
-# define STFU /* */
-# endif
-
-
#ifdef ENABLE_NLS
# include <locale.h>
#endif /* ENABLE_NLS */
#endif /* HAVE_UNAME */
#include <stdio.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <ctype.h>
#include <time.h>
#include <pwd.h> /* for getpwuid() */
#include <sys/stat.h>
#include <sys/time.h>
-
#include <signal.h>
#include <errno.h>
#ifdef HAVE_SYS_WAIT_H
# include <sys/wait.h> /* for waitpid() and associated macros */
#endif
-
-#include <X11/Xproto.h> /* for CARD32 */
#include <X11/Xatom.h> /* for XA_INTEGER */
-#include <X11/Intrinsic.h>
-#include <X11/StringDefs.h>
-
-/* We don't actually use any widget internals, but these are included
- so that gdb will have debug info for the widgets... */
-#include <X11/IntrinsicP.h>
-#include <X11/ShellP.h>
-
-#ifdef HAVE_XINERAMA
-# include <X11/extensions/Xinerama.h>
-#endif /* HAVE_XINERAMA */
+#include <X11/Shell.h>
#if (__GNUC__ >= 4) /* Ignore useless warnings generated by gtk.h */
# undef inline
#endif
#include <gtk/gtk.h>
-
-#include <gdk/gdkx.h>
-
-#ifndef HAVE_GTK2
-# error GTK 2.x is required
-#endif
-
-#include <gmodule.h>
+#include <gdk/gdkx.h> /* For gdk_x11_get_default_xdisplay(), etc. */
#if (__GNUC__ >= 4)
# pragma GCC diagnostic pop
#endif
-
+#include "blurb.h"
+#include "xscreensaver-intl.h"
#include "version.h"
#include "types.h"
#include "resources.h" /* for parse_time() */
#include "visual.h"
#include "atoms.h"
#include "usleep.h"
+#include "atoms.h"
#include "xmu.h"
-#include "logo-50.xpm"
-#include "logo-180.xpm"
-
#include "demo-Gtk-conf.h"
-#include "atoms.h"
-
-#include <stdio.h>
-#include <string.h>
-#include <ctype.h>
-
-enum {
- COL_ENABLED,
- COL_NAME,
- COL_LAST
-};
-
-/* Deal with deprecation of direct access to struct fields on the way to GTK3
- See http://live.gnome.org/GnomeGoals/UseGseal
- */
-#if GTK_CHECK_VERSION(2,14,0)
-# define GET_PARENT(w) gtk_widget_get_parent (w)
-# define GET_WINDOW(w) gtk_widget_get_window (w)
-# define GET_ACTION_AREA(d) gtk_dialog_get_action_area (d)
-# define GET_CONTENT_AREA(d) gtk_dialog_get_content_area (d)
-# define GET_ADJ_VALUE(a) gtk_adjustment_get_value (a)
-# define SET_ADJ_VALUE(a,v) gtk_adjustment_set_value (a, v)
-# define SET_ADJ_UPPER(a,v) gtk_adjustment_set_upper (a, v)
-#else
-# define GET_PARENT(w) ((w)->parent)
-# define GET_WINDOW(w) ((w)->window)
-# define GET_ACTION_AREA(d) ((d)->action_area)
-# define GET_CONTENT_AREA(d) ((d)->vbox)
-# define GET_ADJ_VALUE(a) ((a)->value)
-# define SET_ADJ_VALUE(a,v) (a)->value = v
-# define SET_ADJ_UPPER(a,v) (a)->upper = v
-#endif
-
-#if GTK_CHECK_VERSION(2,18,0)
-# define SET_CAN_DEFAULT(w) gtk_widget_set_can_default ((w), TRUE)
-# define GET_SENSITIVE(w) gtk_widget_get_sensitive (w)
-#else
-# define SET_CAN_DEFAULT(w) GTK_WIDGET_SET_FLAGS ((w), GTK_CAN_DEFAULT)
-# define GET_SENSITIVE(w) GTK_WIDGET_IS_SENSITIVE (w)
-#endif
-#if GTK_CHECK_VERSION(2,20,0)
-# define GET_REALIZED(w) gtk_widget_get_realized (w)
-#else
-# define GET_REALIZED(w) GTK_WIDGET_REALIZED (w)
-#endif
/* from exec.c */
extern void exec_command (const char *shell, const char *command, int nice);
extern int on_path_p (const char *program);
-static void hack_subproc_environment (Window preview_window_id, Bool debug_p);
#undef countof
#define countof(x) (sizeof((x))/sizeof((*x)))
+const char *progclass = "XScreenSaver";
-char *progclass = "XScreenSaver";
-XrmDatabase db;
+#ifdef __GNUC__
+# define STFU __extension__ /* ignore gcc -pendantic warnings in next sexp */
+#endif
+static char *defaults[] = {
+#include "XScreenSaver_ad.h"
+ 0
+};
/* The order of the items in the mode menu. */
static int mode_menu_order[] = {
DONT_BLANK, BLANK_ONLY, ONE_HACK, RANDOM_HACKS, RANDOM_HACKS_SAME };
+enum { COL_ENABLED, COL_NAME, COL_LAST };
+typedef enum { D_NONE, D_LAUNCH, D_GNOME, D_KDE } dialog_button;
typedef struct {
char *short_version; /* version number of this xscreensaver build */
- GtkWidget *toplevel_widget; /* the main window */
- GtkWidget *base_widget; /* root of our hierarchy (for name lookups) */
- GtkWidget *popup_widget; /* the "Settings" dialog */
- conf_data *cdata; /* private data for per-hack configuration */
+ GtkWindow *window;
+ GtkWindow *dialog;
+
+ Display *dpy;
+ Bool wayland_p;
- GtkBuilder *gtk_ui; /* UI file */
+ conf_data *cdata; /* private data for per-hack configuration */
Bool debug_p; /* whether to print diagnostics */
Bool initializing_p; /* flag for breaking recursion loops */
} state;
-/* Total fucking evilness due to the fact that it's rocket science to get
- a closure object of our own down into the various widget callbacks. */
-static state *global_state_kludge;
+/* Class definitions for the application and two windows. The classes are:
+
+ XScreenSaverApp -- The invisible GtkApplication main-loop framework.
+ XScreenSaverWindow -- The main window with the scrolling list of hacks.
+ XScreenSaverDialog -- The per-hack settings window.
+ */
+#define XSCREENSAVER_APP_TYPE (xscreensaver_app_get_type())
+G_DECLARE_FINAL_TYPE (XScreenSaverApp, xscreensaver_app, XSCREENSAVER, APP,
+ GtkApplication)
+
+struct _XScreenSaverApp {
+ GtkApplication parent;
+ Bool cmdline_debug_p;
+};
+
+
+G_DEFINE_TYPE (XScreenSaverApp, xscreensaver_app, GTK_TYPE_APPLICATION)
+
+/* The widgets we reference from the demo.ui file.
+ */
+#define ALL_WINDOW_WIDGETS \
+ W(activate_menuitem) \
+ W(lock_menuitem) \
+ W(kill_menuitem) \
+ W(list) \
+ W(scroller) \
+ W(preview_frame) \
+ W(short_preview_label) \
+ W(preview_author_label) \
+ W(timeout_spinbutton) \
+ W(cycle_spinbutton) \
+ W(lock_spinbutton) \
+ W(dpms_standby_spinbutton) \
+ W(dpms_suspend_spinbutton) \
+ W(dpms_off_spinbutton) \
+ W(fade_spinbutton) \
+ W(lock_button) \
+ W(dpms_button) \
+ W(dpms_quickoff_button) \
+ W(grab_desk_button) \
+ W(grab_video_button) \
+ W(grab_image_button) \
+ W(fade_button) \
+ W(unfade_button) \
+ W(preview) \
+ W(preview_notebook) \
+ W(text_radio) \
+ W(text_file_radio) \
+ W(text_file_browse) \
+ W(text_program_radio) \
+ W(text_url_radio) \
+ W(text_host_radio) \
+ W(image_text) \
+ W(image_browse_button) \
+ W(text_entry) \
+ W(text_file_entry) \
+ W(text_program_entry) \
+ W(text_url_entry) \
+ W(text_program_browse) \
+ W(theme_menu) \
+ W(mode_menu) \
+ W(next_prev_hbox) \
+ W(blanking_table) \
+ W(lock_mlabel) \
+ W(dpms_frame) \
+ W(dpms_standby_label) \
+ W(dpms_standby_mlabel) \
+ W(dpms_suspend_label) \
+ W(dpms_suspend_mlabel) \
+ W(dpms_off_label) \
+ W(dpms_off_mlabel) \
+ W(fade_label) \
+ W(demo) \
+ W(settings) \
+
+/* The widgets we reference from the prefs.ui file.
+ */
+#define ALL_DIALOG_WIDGETS \
+ W(opt_notebook) \
+ W(doc) \
+ W(settings_vbox) \
+ W(cmd_text) \
+ W(opt_frame) \
+ W(dialog_vbox) \
+ W(adv_button) \
+ W(std_button) \
+ W(cmd_label) \
+ W(manual) \
+ W(visual) \
+ W(visual_combo) \
+ W(reset_button) \
+ W(ok_button) \
+
+#define XSCREENSAVER_WINDOW_TYPE (xscreensaver_window_get_type())
+G_DECLARE_FINAL_TYPE (XScreenSaverWindow, xscreensaver_window,
+ XSCREENSAVER, WINDOW, GtkApplicationWindow)
+
+struct _XScreenSaverWindow {
+ GtkApplicationWindow parent;
+ state state;
+
+ GtkWidget
+# undef W
+# define W(NAME) * NAME,
+ ALL_WINDOW_WIDGETS
+ *_dummy;
+# undef W
+};
+
+G_DEFINE_TYPE (XScreenSaverWindow, xscreensaver_window,
+ GTK_TYPE_APPLICATION_WINDOW)
+
+
+#define XSCREENSAVER_DIALOG_TYPE (xscreensaver_dialog_get_type())
+G_DECLARE_FINAL_TYPE (XScreenSaverDialog, xscreensaver_dialog,
+ XSCREENSAVER, DIALOG, GtkDialog)
+
+struct _XScreenSaverDialog {
+ GtkApplicationWindow parent;
+ XScreenSaverWindow *main;
+ char *unedited_cmdline; /* Current hack command line before saving */
+
+ GtkWidget
+# undef W
+# define W(NAME) * NAME,
+ ALL_DIALOG_WIDGETS
+ *_dummy;
+# undef W
+};
+
+G_DEFINE_TYPE (XScreenSaverDialog, xscreensaver_dialog,
+ GTK_TYPE_DIALOG)
+
+
+static void hack_subproc_environment (Window preview_window_id, Bool debug_p);
static void populate_demo_window (state *, int list_elt);
static void populate_prefs_page (state *);
static void await_xscreensaver (state *);
static Bool xscreensaver_running_p (state *);
static void sensitize_menu_items (state *s, Bool force_p);
-static void force_dialog_repaint (state *s);
static void schedule_preview (state *, const char *cmd);
static void kill_preview_subproc (state *, Bool reset_p);
static void schedule_preview_check (state *);
+static void sensitize_demo_widgets (state *, Bool sensitive_p);
+static void kill_gnome_screensaver (state *);
+static void kill_kde_screensaver (state *);
-/* Prototypes of functions used by the Gtk-generated code, to avoid warnings.
+/* Some pathname utilities */
+
+/* Removed redundant . and .. components from the pathname.
+ Strip leading and trailing spaces.
+ Make it have a trailing slash if it should be a directory.
*/
-void exit_menu_cb (GtkAction *, gpointer user_data);
-void about_menu_cb (GtkAction *, gpointer user_data);
-void doc_menu_cb (GtkAction *, gpointer user_data);
-void file_menu_cb (GtkAction *, gpointer user_data);
-void activate_menu_cb (GtkAction *, gpointer user_data);
-void lock_menu_cb (GtkAction *, gpointer user_data);
-void kill_menu_cb (GtkAction *, gpointer user_data);
-void restart_menu_cb (GtkWidget *, gpointer user_data);
-void run_this_cb (GtkButton *, gpointer user_data);
-void manual_cb (GtkButton *, gpointer user_data);
-void run_next_cb (GtkButton *, gpointer user_data);
-void run_prev_cb (GtkButton *, gpointer user_data);
-void pref_changed_cb (GtkWidget *, gpointer user_data);
-gboolean pref_changed_event_cb (GtkWidget *, GdkEvent *, gpointer user_data);
-gboolean image_text_pref_changed_event_cb (GtkWidget *, GdkEvent *,
- gpointer user_data);
-void mode_menu_item_cb (GtkWidget *, gpointer user_data);
-void switch_page_cb (GtkNotebook *, GtkNotebookPage *,
- gint page_num, gpointer user_data);
-void browse_image_dir_cb (GtkButton *, gpointer user_data);
-void browse_text_file_cb (GtkButton *, gpointer user_data);
-void browse_text_program_cb (GtkButton *, gpointer user_data);
-void settings_cb (GtkButton *, gpointer user_data);
-void settings_adv_cb (GtkButton *, gpointer user_data);
-void settings_std_cb (GtkButton *, gpointer user_data);
-void settings_reset_cb (GtkButton *, gpointer user_data);
-void settings_switch_page_cb (GtkNotebook *, GtkNotebookPage *,
- gint page_num, gpointer user_data);
-void settings_cancel_cb (GtkButton *, gpointer user_data);
-void settings_ok_cb (GtkButton *, gpointer user_data);
-void preview_theme_cb (GtkWidget *, gpointer user_data);
-
-static void kill_gnome_screensaver (void);
-static void kill_kde_screensaver (void);
+static char *
+normalize_pathname (const char *path, gboolean dir_p)
+{
+ int L;
+ char *p2, *s;
+ if (!path) return 0;
+ if (!*path) return strdup ("");
-/* Some random utility functions
+ /* Strip leading spaces */
+ while (isspace (*path)) path++;
+
+ L = strlen (path);
+ p2 = (char *) malloc (L + 3);
+ strcpy (p2, path);
+
+ /* Strip trailing spaces and slashes */
+ while (L > 0 && (isspace (p2[L-1]) || p2[L-1] == '/'))
+ p2[--L] = 0;
+
+ for (s = p2; s && *s; s++)
+ {
+ if (*s == '/' &&
+ (!strncmp (s, "/../", 4) || /* delete "XYZ/../" */
+ !strncmp (s, "/..\000", 4))) /* delete "XYZ/..$" */
+ {
+ char *s0 = s;
+ while (s0 > p2 && s0[-1] != '/')
+ s0--;
+ if (s0 > p2)
+ {
+ s0--;
+ s += 3;
+ /* strcpy (s0, s); */
+ memmove(s0, s, strlen(s) + 1);
+ s = s0-1;
+ }
+ }
+ else if (*s == '/' && !strncmp (s, "/./", 3)) { /* delete "/./" */
+ /* strcpy (s, s+2), s--; */
+ memmove(s, s+2, strlen(s+2) + 1);
+ s--;
+ }
+ else if (*s == '/' && !strncmp (s, "/.\000", 3)) /* delete "/.$" */
+ *s = 0, s--;
+ }
+
+ /*
+ Normalize consecutive slashes.
+ Ignore doubled slashes after ":" to avoid mangling URLs.
+ */
+
+ for (s = p2; s && *s; s++){
+ if (*s == ':') continue;
+ if (!s[1] || !s[2]) continue;
+ while (s[1] == '/' && s[2] == '/')
+ /* strcpy (s+1, s+2); */
+ memmove (s+1, s+2, strlen(s+2) + 1);
+ }
+
+ /* and strip trailing whitespace for good measure. */
+ L = strlen(p2);
+ while (isspace(p2[L-1]))
+ p2[--L] = 0;
+
+ if (dir_p)
+ {
+ p2[L++] = '/'; /* Add trailing slash */
+ p2[L] = 0;
+ }
+
+ return p2;
+}
+
+
+/* Expand or un-expand ~/ to $HOME in a pathname, as requested.
+ Strip leading and trailing spaces.
+ Make it have a trailing slash if it should be a directory.
*/
+static char *
+pathname_tilde (const char *p, gboolean add_p, gboolean dir_p)
+{
+ char *p2;
+ if (!p) return 0;
+
+ p2 = normalize_pathname (p, dir_p);
+ p = p2;
+
+ if (add_p)
+ {
+ const char *home = getenv("HOME");
+ int L = strlen(home);
+ if (!strncmp (home, p, L) && p[L] == '/')
+ {
+ char *p3 = (char *) malloc (strlen (p) + 4);
+ strcpy (p3, "~");
+ strcat (p3, p + L);
+ free (p2);
+ p2 = p3;
+ }
+ }
+ else if (!strncmp (p, "~/", 2))
+ {
+ const char *home = getenv("HOME");
+ char *p3 = (char *) malloc (strlen (p) + strlen (home) + 4);
+ strcpy (p3, home);
+ strcat (p3, p + 1);
+ free (p2);
+ p2 = p3;
+ }
+
+ return p2;
+}
+
+
+/* Is the path a directory that exists? */
+static gboolean
+directory_p (const char *path)
+{
+ char *p2 = pathname_tilde (path, FALSE, FALSE); /* no slash on dir */
+ struct stat st;
+ gboolean ok = FALSE;
+
+ if (!p2 || !*p2)
+ ok = FALSE;
+ else if (stat (p2, &st))
+ ok = FALSE;
+ else if (!S_ISDIR (st.st_mode))
+ ok = FALSE;
+ else
+ ok = TRUE;
+ free (p2);
+ return ok;
+}
+
+
+/* Is the path a file (not directory) that exists? */
+static gboolean
+file_p (const char *path)
+{
+ char *p2 = pathname_tilde (path, FALSE, FALSE);
+ struct stat st;
+ gboolean ok = FALSE;
+ if (!p2 || !*p2)
+ ok = FALSE;
+ else if (stat (p2, &st))
+ ok = FALSE;
+ else if (S_ISDIR (st.st_mode))
+ ok = FALSE;
+ else
+ ok = TRUE;
+ free (p2);
+ return ok;
+}
+
+
-static GtkWidget *
-name_to_widget (state *s, const char *name)
+/* See if the directory has at least one image file under it.
+ Recurses to at most the given depth, chasing symlinks.
+ To do this properly would mean running "xscreensaver-getimage-file"
+ and seeing if it found anything, but that might take a long time to
+ build the cache the first time, so this is close enough.
+ */
+static Bool
+image_files_p (const char *path, int max_depth)
{
- GtkWidget *w;
- if (!s) abort();
- if (!name) abort();
- if (!*name) abort();
+ const char * const exts[] = {
+ "jpg", "jpeg", "pjpeg", "pjpg", "png", "gif",
+ "tif", "tiff", "xbm", "xpm", "svg",
+ };
+ struct dirent *de;
+ Bool ok = FALSE;
+ char *p2 = pathname_tilde (path, FALSE, FALSE); /* no slash on dir */
+ DIR *dir = opendir (p2);
+ if (!dir) goto DONE;
- if (!s->gtk_ui)
+ while (!ok && (de = readdir (dir)))
{
- /* First try to load the UI file from the current directory;
- if there isn't one there, check the installed directory.
- */
-# define UI_FILE "xscreensaver.ui"
- const char * const files[] = { UI_FILE,
- DEFAULT_ICONDIR "/" UI_FILE };
- int i;
+ struct stat st;
+ const char *f = de->d_name;
+ char *f2;
+ if (*f == '.') continue;
- s->gtk_ui = gtk_builder_new ();
+ f2 = (char *) malloc (strlen(p2) + strlen(f) + 10);
+ strcpy (f2, p2);
+ strcat (f2, "/");
+ strcat (f2, f);
- for (i = 0; i < countof (files); i++)
+ if (!stat (f2, &st))
{
- struct stat st;
- if (!stat (files[i], &st))
+ if (S_ISDIR (st.st_mode))
{
- GError* error = NULL;
-
- if (gtk_builder_add_from_file (s->gtk_ui, files[i], &error))
- break;
- else
- {
- g_warning ("Couldn't load builder file %s: %s",
- files[i], error->message);
- g_error_free (error);
- }
+ if (max_depth > 0 && image_files_p (f2, max_depth - 1))
+ ok = TRUE;
+ }
+ else
+ {
+ int i;
+ const char *ext = strrchr (f, '.');
+ if (ext)
+ for (i = 0; i < countof(exts); i++)
+ if (!strcasecmp (ext+1, exts[i]))
+ {
+ /* fprintf (stderr, "%s: found %s\n", blurb(), f2); */
+ ok = TRUE;
+ break;
+ }
}
}
- if (i >= countof (files))
- {
- fprintf (stderr,
- "%s: could not load \"" UI_FILE "\"\n"
- "\tfrom " DEFAULT_ICONDIR "/ or current directory.\n",
- blurb());
- exit (-1);
- }
-# undef UI_FILE
- gtk_builder_connect_signals (s->gtk_ui, NULL);
+ free (f2);
}
- w = GTK_WIDGET (gtk_builder_get_object (s->gtk_ui, name));
-
- if (w) return w;
-
- fprintf (stderr, "%s: no widget \"%s\" (wrong UI file?)\n",
- blurb(), name);
- abort();
+ closedir (dir);
+ DONE:
+ free (p2);
+ return ok;
}
-/* Why this behavior isn't automatic in *either* toolkit, I'll never know.
- Takes a scroller, viewport, or list as an argument.
+/* Some random utility functions
+ */
+
+/* Why this behavior isn't automatic, I'll never understand.
*/
static void
ensure_selected_item_visible (GtkWidget *widget)
selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (widget));
if (!gtk_tree_selection_get_selected (selection, &model, &iter))
- path = gtk_tree_path_new_first ();
+ path = gtk_tree_path_new_first ();
else
- path = gtk_tree_model_get_path (model, &iter);
+ path = gtk_tree_model_get_path (model, &iter);
gtk_tree_view_set_cursor (GTK_TREE_VIEW (widget), path, NULL, FALSE);
}
-/* The "OK" button on a warning dialog. */
static void
-warning_dialog_dismiss_cb (GtkWidget *widget, gpointer user_data)
+warning_dialog_cb (GtkDialog *dialog, gint response_id, gpointer user_data)
{
- GtkWidget *shell = GTK_WIDGET (user_data);
- while (GET_PARENT (shell))
- shell = GET_PARENT (shell);
- gtk_widget_destroy (GTK_WIDGET (shell));
+ XScreenSaverWindow *win = XSCREENSAVER_WINDOW (user_data);
+ state *s = &win->state;
+ switch (response_id) {
+ case D_LAUNCH: restart_menu_cb (GTK_WIDGET (dialog), user_data); break;
+ case D_GNOME: kill_gnome_screensaver (s); break;
+ case D_KDE: kill_kde_screensaver (s); break;
+ default: /* D_NONE or GTK_RESPONSE_DELETE_EVENT */
+ break;
+ }
+ gtk_widget_destroy (GTK_WIDGET (dialog));
}
-void restart_menu_cb (GtkWidget *widget, gpointer user_data);
-
-/* The "Restart daemon" button on a warning dialog. */
-static void warning_dialog_restart_cb (GtkWidget *widget, gpointer user_data)
+static Bool
+warning_dialog_1 (GtkWindow *win,
+ const char *title,
+ const char *message,
+ dialog_button button_type)
{
- restart_menu_cb (widget, user_data);
- warning_dialog_dismiss_cb (widget, user_data);
-}
+ GtkWidget *dialog =
+ (button_type == D_NONE
+ ? gtk_dialog_new_with_buttons (title, win,
+ GTK_DIALOG_DESTROY_WITH_PARENT,
+ _("_OK"), D_NONE,
+ NULL)
+ : gtk_dialog_new_with_buttons (title, win,
+ GTK_DIALOG_DESTROY_WITH_PARENT,
+ (button_type == D_LAUNCH ? _("Launch") :
+ button_type == D_GNOME ? _("Kill") :
+ button_type == D_KDE ? _("Kill") :
+ _("_OK")),
+ button_type,
+ _("_Cancel"), D_NONE,
+ NULL));
+ GtkWidget *content_area =
+ gtk_dialog_get_content_area (GTK_DIALOG (dialog));
+ GtkWidget *hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
+ GtkWidget *vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
+ GtkWidget *im = gtk_image_new_from_icon_name ("dialog-warning",
+ GTK_ICON_SIZE_DIALOG);
+ GtkWidget *label = gtk_label_new (message);
+ int margin = 32;
+
+ gtk_box_pack_start (GTK_BOX (hbox), im, FALSE, FALSE, 0);
+ gtk_box_pack_start (GTK_BOX (hbox), vbox, FALSE, FALSE, 0);
+ gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
+ gtk_container_add (GTK_CONTAINER (content_area), hbox);
+
+ gtk_widget_set_margin_start (hbox, margin);
+ gtk_widget_set_margin_end (hbox, margin);
+ gtk_widget_set_margin_top (hbox, margin);
+ gtk_widget_set_margin_bottom (hbox, margin / 2);
+
+ gtk_widget_set_margin_start (label, margin / 2);
+ gtk_widget_set_valign (im, GTK_ALIGN_START);
+
+ g_signal_connect (dialog, "response",
+ G_CALLBACK (warning_dialog_cb),
+ win);
+
+ gtk_dialog_set_default_response (GTK_DIALOG (dialog), button_type);
+ gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE);
+ gtk_window_set_transient_for (GTK_WINDOW (dialog), win);
+ gtk_widget_show_all (dialog);
-/* The "Kill gnome-screensaver" button on a warning dialog. */
-static void warning_dialog_killg_cb (GtkWidget *widget, gpointer user_data)
-{
- kill_gnome_screensaver ();
- warning_dialog_dismiss_cb (widget, user_data);
+ return TRUE;
}
-/* The "Kill kde-screensaver" button on a warning dialog. */
-static void warning_dialog_killk_cb (GtkWidget *widget, gpointer user_data)
+
+void
+warning_dialog (GtkWindow *win, const char *title, const char *message)
{
- kill_kde_screensaver ();
- warning_dialog_dismiss_cb (widget, user_data);
+ warning_dialog_1 (win, title, message, D_NONE);
}
-typedef enum { D_NONE, D_LAUNCH, D_GNOME, D_KDE } dialog_button;
-static Bool
-warning_dialog (GtkWidget *parent, const char *message,
- dialog_button button_type, int center)
+static void
+run_cmd (state *s, Atom command, int arg)
{
- char *msg = strdup (message);
- char *head;
+ char *err = 0;
+ int status;
+
+ if (!s->dpy) return;
+ flush_dialog_changes_and_save (s);
- GtkWidget *dialog = gtk_dialog_new ();
- GtkWidget *label = 0;
- GtkWidget *ok = 0;
- GtkWidget *cancel = 0;
- int margin_x = 48;
- int margin_y = 4;
- int i = 0;
+ if (s->debug_p)
+ fprintf (stderr, "%s: command: %s %d\n", blurb(),
+ XGetAtomName (s->dpy, command), arg);
+ status = xscreensaver_command (s->dpy, command, arg, FALSE, &err);
- while (parent && !GET_WINDOW (parent))
- parent = GET_PARENT (parent);
+ /* Kludge: ignore the spurious "window unexpectedly deleted" errors... */
+ if (status < 0 && err && strstr (err, "unexpectedly deleted"))
+ status = 0;
- if (!parent ||
- !GET_WINDOW (parent)) /* too early to pop up transient dialogs */
+ if (status < 0)
{
- fprintf (stderr,
- "%s: too early for warning dialog?"
- "\n\n\t%s\n\n",
- progname, message);
- free(msg);
- return False;
+ char buf [255];
+ sprintf (buf, "%.100s", (err ? err : _("Unknown error!")));
+ warning_dialog (s->window, _("Error"), buf);
}
+ if (err) free (err);
- /* Top margin */
- label = gtk_label_new ("");
- gtk_misc_set_padding (GTK_MISC (label), 0, margin_y);
- gtk_box_pack_start (GTK_BOX (GET_CONTENT_AREA (GTK_DIALOG (dialog))),
- label, TRUE, TRUE, 0);
- gtk_widget_show (label);
+ sensitize_menu_items (s, TRUE);
+}
- head = msg;
- while (head)
- {
- char name[20];
- char *s = strchr (head, '\n');
- if (s) *s = 0;
- sprintf (name, "label%d", i++);
+static void
+run_hack (state *s, int list_elt, Bool report_errors_p)
+{
+ int hack_number;
+ char *err = 0;
+ int status;
- {
- label = gtk_label_new (head);
- gtk_label_set_selectable (GTK_LABEL (label), TRUE);
- gtk_misc_set_padding (GTK_MISC (label), margin_x, 0);
-
- if (center <= 0)
- gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
- gtk_box_pack_start (GTK_BOX (GET_CONTENT_AREA (GTK_DIALOG (dialog))),
- label, TRUE, TRUE, 0);
- gtk_widget_show (label);
- }
-
- if (s)
- head = s+1;
- else
- head = 0;
-
- center--;
- }
-
- /* Bottom margin */
- label = gtk_label_new ("");
- gtk_misc_set_padding (GTK_MISC (label), 0, margin_y * 2);
- gtk_box_pack_start (GTK_BOX (GET_CONTENT_AREA (GTK_DIALOG (dialog))),
- label, TRUE, TRUE, 0);
- gtk_widget_show (label);
-
- label = gtk_hbutton_box_new ();
- gtk_box_pack_start (GTK_BOX (GET_ACTION_AREA (GTK_DIALOG (dialog))),
- label, TRUE, TRUE, 0);
-
- if (button_type != D_NONE)
- {
- cancel = gtk_button_new_from_stock (GTK_STOCK_CANCEL);
- gtk_container_add (GTK_CONTAINER (label), cancel);
- }
-
- ok = gtk_button_new_from_stock (GTK_STOCK_OK);
- gtk_container_add (GTK_CONTAINER (label), ok);
-
- gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_CENTER);
- gtk_container_set_border_width (GTK_CONTAINER (dialog), 10);
- gtk_window_set_title (GTK_WINDOW (dialog), progclass);
- SET_CAN_DEFAULT (ok);
- gtk_widget_show (ok);
- gtk_widget_grab_focus (ok);
-
- if (cancel)
- {
- SET_CAN_DEFAULT (cancel);
- gtk_widget_show (cancel);
- }
- gtk_widget_show (label);
- gtk_widget_show (dialog);
-
- if (button_type != D_NONE)
- {
- GtkSignalFunc fn;
- switch (button_type) {
- case D_LAUNCH: fn = GTK_SIGNAL_FUNC (warning_dialog_restart_cb); break;
- case D_GNOME: fn = GTK_SIGNAL_FUNC (warning_dialog_killg_cb); break;
- case D_KDE: fn = GTK_SIGNAL_FUNC (warning_dialog_killk_cb); break;
- default: abort(); break;
- }
- gtk_signal_connect_object (GTK_OBJECT (ok), "clicked", fn,
- (gpointer) dialog);
- gtk_signal_connect_object (GTK_OBJECT (cancel), "clicked",
- GTK_SIGNAL_FUNC (warning_dialog_dismiss_cb),
- (gpointer) dialog);
- }
- else
- {
- gtk_signal_connect_object (GTK_OBJECT (ok), "clicked",
- GTK_SIGNAL_FUNC (warning_dialog_dismiss_cb),
- (gpointer) dialog);
- }
-
- gdk_window_set_transient_for (GET_WINDOW (GTK_WIDGET (dialog)),
- GET_WINDOW (GTK_WIDGET (parent)));
-
- gtk_window_present (GTK_WINDOW (dialog));
-
- free (msg);
- return True;
-}
-
-
-static void
-run_cmd (state *s, Atom command, int arg)
-{
- char *err = 0;
- int status;
-
- flush_dialog_changes_and_save (s);
-
- if (s->debug_p)
- fprintf (stderr, "%s: command: %s %d\n", blurb(),
- XGetAtomName (GDK_DISPLAY(), command), arg);
- status = xscreensaver_command (GDK_DISPLAY(), command, arg, False, &err);
-
- /* Kludge: ignore the spurious "window unexpectedly deleted" errors... */
- if (status < 0 && err && strstr (err, "unexpectedly deleted"))
- status = 0;
-
- if (status < 0)
- {
- char buf [255];
- if (err)
- sprintf (buf, "Error:\n\n%s", err);
- else
- strcpy (buf, "Unknown error!");
- warning_dialog (s->toplevel_widget, buf, D_NONE, 100);
- }
- if (err) free (err);
-
- sensitize_menu_items (s, True);
- force_dialog_repaint (s);
-}
-
-
-static void
-run_hack (state *s, int list_elt, Bool report_errors_p)
-{
- int hack_number;
- char *err = 0;
- int status;
-
- if (list_elt < 0) return;
- hack_number = s->list_elt_to_hack_number[list_elt];
+ if (!s->dpy) return;
+ if (list_elt < 0) return;
+ hack_number = s->list_elt_to_hack_number[list_elt];
flush_dialog_changes_and_save (s);
schedule_preview (s, 0);
if (s->debug_p)
fprintf (stderr, "%s: command: DEMO %d\n", blurb(), hack_number + 1);
- status = xscreensaver_command (GDK_DISPLAY(), XA_DEMO, hack_number + 1,
- False, &err);
+ status = xscreensaver_command (s->dpy, XA_DEMO, hack_number + 1,
+ FALSE, &err);
if (status < 0 && report_errors_p)
{
if (status < 0)
{
char buf [255];
- if (err)
- sprintf (buf, "Error:\n\n%s", err);
- else
- strcpy (buf, "Unknown error!");
- warning_dialog (s->toplevel_widget, buf, D_NONE, 100);
+ sprintf (buf, "%.100s", err ? err : _("Unknown error!"));
+ warning_dialog (s->window, _("Error"), buf);
}
}
else
/* The error is that the daemon isn't running;
offer to restart it.
*/
- const char *d = DisplayString (GDK_DISPLAY());
+ const char *d = DisplayString (s->dpy);
char msg [1024];
sprintf (msg,
- _("Warning:\n\n"
- "The XScreenSaver daemon doesn't seem to be running\n"
+ _("The XScreenSaver daemon doesn't seem to be running\n"
"on display \"%.25s\". Launch it now?"),
d);
- warning_dialog (s->toplevel_widget, msg, D_LAUNCH, 1);
+ warning_dialog_1 (s->window, _("Warning"), msg, D_LAUNCH);
}
}
if (err) free (err);
- sensitize_menu_items (s, False);
+ sensitize_menu_items (s, FALSE);
}
-/* Button callbacks, referenced by xscreensaver.ui.
- */
+/****************************************************************************
-/* File menu / Exit */
-G_MODULE_EXPORT void
-exit_menu_cb (GtkAction *menu_action, gpointer user_data)
-{
- state *s = global_state_kludge; /* I hate C so much... */
- flush_dialog_changes_and_save (s);
- kill_preview_subproc (s, False);
- gtk_main_quit ();
-}
+ XScreenSaverWindow callbacks, referenced by demo.ui.
-/* Close (X) button */
-static gboolean
-wm_toplevel_close_cb (GtkWidget *widget, GdkEvent *event, gpointer data)
+ ****************************************************************************/
+
+/* File menu / Quit */
+G_MODULE_EXPORT void
+quit_menu_cb (GtkAction *menu_action, gpointer user_data)
{
- state *s = (state *) data;
+ XScreenSaverWindow *win = XSCREENSAVER_WINDOW (user_data);
+ state *s = &win->state;
+ if (s->debug_p) fprintf (stderr, "%s: quit menu\n", blurb());
flush_dialog_changes_and_save (s);
- gtk_main_quit ();
- return TRUE;
+ kill_preview_subproc (s, FALSE);
+ g_application_quit (G_APPLICATION (
+ gtk_window_get_application (GTK_WINDOW (win))));
}
G_MODULE_EXPORT void
about_menu_cb (GtkAction *menu_action, gpointer user_data)
{
- /* Let's just pop up the splash dialog. */
+ XScreenSaverWindow *win = XSCREENSAVER_WINDOW (user_data);
+ state *s = &win->state;
+ if (s->debug_p) fprintf (stderr, "%s: about menu\n", blurb());
preview_theme_cb (NULL, user_data);
}
G_MODULE_EXPORT void
doc_menu_cb (GtkAction *menu_action, gpointer user_data)
{
- state *s = global_state_kludge; /* I hate C so much... */
+ XScreenSaverWindow *win = XSCREENSAVER_WINDOW (user_data);
+ state *s = &win->state;
saver_preferences *p = &s->prefs;
char *help_command;
+ if (s->debug_p) fprintf (stderr, "%s: doc menu\n", blurb());
+
if (!p->help_url || !*p->help_url)
{
- warning_dialog (s->toplevel_widget,
- _("Error:\n\n"
- "No Help URL has been specified.\n"), D_NONE, 100);
+ warning_dialog (GTK_WINDOW (win), _("Error"),
+ _("No Help URL has been specified.\n"));
return;
}
G_MODULE_EXPORT void
file_menu_cb (GtkAction *menu_action, gpointer user_data)
{
- state *s = global_state_kludge; /* I hate C so much... */
- sensitize_menu_items (s, False);
+ XScreenSaverWindow *win = XSCREENSAVER_WINDOW (user_data);
+ state *s = &win->state;
+ if (s->debug_p) fprintf (stderr, "%s: file menu post\n", blurb());
+ sensitize_menu_items (s, FALSE);
}
G_MODULE_EXPORT void
activate_menu_cb (GtkAction *menu_action, gpointer user_data)
{
- state *s = global_state_kludge; /* I hate C so much... */
+ XScreenSaverWindow *win = XSCREENSAVER_WINDOW (user_data);
+ state *s = &win->state;
+ if (s->debug_p) fprintf (stderr, "%s: activate menu\n", blurb());
run_cmd (s, XA_ACTIVATE, 0);
}
G_MODULE_EXPORT void
lock_menu_cb (GtkAction *menu_action, gpointer user_data)
{
- state *s = global_state_kludge; /* I hate C so much... */
+ XScreenSaverWindow *win = XSCREENSAVER_WINDOW (user_data);
+ state *s = &win->state;
+ if (s->debug_p) fprintf (stderr, "%s: lock menu\n", blurb());
run_cmd (s, XA_LOCK, 0);
}
G_MODULE_EXPORT void
kill_menu_cb (GtkAction *menu_action, gpointer user_data)
{
- state *s = global_state_kludge; /* I hate C so much... */
+ XScreenSaverWindow *win = XSCREENSAVER_WINDOW (user_data);
+ state *s = &win->state;
+ if (s->debug_p) fprintf (stderr, "%s: kill menu\n", blurb());
run_cmd (s, XA_EXIT, 0);
}
G_MODULE_EXPORT void
restart_menu_cb (GtkWidget *widget, gpointer user_data)
{
- state *s = global_state_kludge; /* I hate C so much... */
+ XScreenSaverWindow *win = XSCREENSAVER_WINDOW (user_data);
+ state *s = &win->state;
+ if (s->debug_p) fprintf (stderr, "%s: restart menu\n", blurb());
+ if (!s->dpy) return;
flush_dialog_changes_and_save (s);
- if (s->debug_p)
- fprintf (stderr, "%s: command: EXIT\n", blurb());
- xscreensaver_command (GDK_DISPLAY(), XA_EXIT, 0, False, NULL);
+ xscreensaver_command (s->dpy, XA_EXIT, 0, FALSE, NULL);
sleep (1);
if (system ("xscreensaver --splash &") < 0)
fprintf (stderr, "%s: fork error\n", blurb());
await_xscreensaver (s);
}
+
static Bool
xscreensaver_running_p (state *s)
{
- Display *dpy = GDK_DISPLAY();
+ Display *dpy = s->dpy;
char *rversion = 0;
+ if (!dpy) return FALSE;
server_xscreensaver_version (dpy, &rversion, 0, 0);
if (!rversion)
- return False;
+ return FALSE;
free (rversion);
- return True;
+ return TRUE;
}
static void
await_xscreensaver (state *s)
{
int countdown = 5;
- Bool ok = False;
+ Bool ok = FALSE;
while (!ok && (--countdown > 0))
if (xscreensaver_running_p (s))
- ok = True;
+ ok = TRUE;
else
sleep (1); /* If it's not there yet, wait a second... */
- sensitize_menu_items (s, True);
+ sensitize_menu_items (s, TRUE);
if (! ok)
{
Bool root_p = (geteuid () == 0);
strcpy (buf,
- _("Error:\n\n"
- "The xscreensaver daemon did not start up properly.\n"
+ _("The xscreensaver daemon did not start up properly.\n"
"\n"));
if (root_p)
- strcat (buf, STFU
-/*
- _("You are running as root. This usually means that xscreensaver\n"
- "was unable to contact your X server because access control is\n"
- "turned on.\n"
- "\n"
- "Try running this command:\n"
- "\n"
- " xhost +localhost\n"
- "\n"
- "and then selecting `File / Restart Daemon'.\n"
- "\n"
- "Note that turning off access control will allow anyone logged\n"
- "on to this machine to access your screen, which might be\n"
- "considered a security problem. Please read the xscreensaver\n"
- "manual and FAQ for more information.\n"
- "\n"
- "You shouldn't run X as root. Instead, you should log in as a\n"
- "normal user, and `sudo' as necessary.")
-*/
+ strcat (buf,
_("You are running as root. Don't do that. Instead, you should\n"
"log in as a normal user and use `sudo' as necessary.")
);
else
strcat (buf, _("Please check your $PATH and permissions."));
- warning_dialog (s->toplevel_widget, buf, D_NONE, 1);
+ warning_dialog (s->window, _("Error"), buf);
}
-
- force_dialog_repaint (s);
}
static int
demo_write_init_file (state *s, saver_preferences *p)
{
- Display *dpy = GDK_DISPLAY();
+ XScreenSaverWindow *win = XSCREENSAVER_WINDOW (s->window);
+ Display *dpy = s->dpy;
- if (!write_init_file (dpy, p, s->short_version, False))
+ if (!write_init_file (dpy, p, s->short_version, FALSE))
{
if (s->debug_p)
fprintf (stderr, "%s: wrote %s\n", blurb(), init_file_name());
{
const char *f = init_file_name();
if (!f || !*f)
- warning_dialog (s->toplevel_widget,
- _("Error:\n\nCouldn't determine init file name!\n"),
- D_NONE, 100);
+ warning_dialog (GTK_WINDOW (win), _("Error"),
+ _("Couldn't determine init file name!\n"));
else
{
char *b = (char *) malloc (strlen(f) + 1024);
- sprintf (b, _("Error:\n\nCouldn't write %s\n"), f);
- warning_dialog (s->toplevel_widget, b, D_NONE, 100);
+ sprintf (b, _("Couldn't write %s\n"), f);
+ warning_dialog (GTK_WINDOW (win), _("Error"), b);
free (b);
}
return -1;
G_MODULE_EXPORT void
run_this_cb (GtkButton *button, gpointer user_data)
{
- state *s = global_state_kludge; /* I hate C so much... */
- int list_elt = selected_list_element (s);
- if (list_elt < 0) return;
- flush_dialog_changes_and_save (s);
- run_hack (s, list_elt, True);
-}
-
-
-/* The "Documentation" button on the Settings dialog */
-G_MODULE_EXPORT void
-manual_cb (GtkButton *button, gpointer user_data)
-{
- Display *dpy = GDK_DISPLAY();
- state *s = global_state_kludge; /* I hate C so much... */
- saver_preferences *p = &s->prefs;
- GtkWidget *list_widget = name_to_widget (s, "list");
+ XScreenSaverWindow *win = XSCREENSAVER_WINDOW (user_data);
+ state *s = &win->state;
int list_elt = selected_list_element (s);
- int hack_number;
- char *name, *name2, *cmd, *str;
- char *oname = 0;
if (list_elt < 0) return;
- hack_number = s->list_elt_to_hack_number[list_elt];
-
+ if (s->debug_p) fprintf (stderr, "%s: preview button\n", blurb());
flush_dialog_changes_and_save (s);
- ensure_selected_item_visible (list_widget);
-
- name = strdup (p->screenhacks[hack_number]->command);
- name2 = name;
- oname = name;
- while (isspace (*name2)) name2++;
- str = name2;
- while (*str && !isspace (*str)) str++;
- *str = 0;
- str = strrchr (name2, '/');
- if (str) name2 = str+1;
-
- cmd = get_string_resource (dpy, "manualCommand", "ManualCommand");
- if (cmd)
- {
- char *cmd2 = (char *) malloc (strlen (cmd) + (strlen (name2) * 4) + 100);
- strcpy (cmd2, "( ");
- sprintf (cmd2 + strlen (cmd2),
- cmd,
- name2, name2, name2, name2);
- strcat (cmd2, " ) &");
- if (system (cmd2) < 0)
- fprintf (stderr, "%s: fork error\n", blurb());
- free (cmd2);
- }
- else
- {
- warning_dialog (GTK_WIDGET (button),
- _("Error:\n\nno `manualCommand' resource set."),
- D_NONE, 100);
- }
-
- free (oname);
+ run_hack (s, list_elt, TRUE);
}
static void
force_list_select_item (state *s, GtkWidget *list, int list_elt, Bool scroll_p)
{
- GtkWidget *parent = name_to_widget (s, "scroller");
- gboolean was = GET_SENSITIVE (parent);
+ XScreenSaverWindow *win = XSCREENSAVER_WINDOW (s->window);
+ GtkWidget *parent = win->scroller;
+ gboolean was = gtk_widget_get_sensitive (parent);
GtkTreeIter iter;
GtkTreeModel *model;
GtkTreeSelection *selection;
- if (!was) gtk_widget_set_sensitive (parent, True);
+ if (!was) gtk_widget_set_sensitive (parent, TRUE);
model = gtk_tree_view_get_model (GTK_TREE_VIEW (list));
if (!model) abort();
if (gtk_tree_model_iter_nth_child (model, &iter, NULL, list_elt))
{
selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (list));
gtk_tree_selection_select_iter (selection, &iter);
+ if (s->debug_p)
+ fprintf (stderr, "%s: select list elt %d\n", blurb(), list_elt);
}
if (scroll_p) ensure_selected_item_visible (GTK_WIDGET (list));
- if (!was) gtk_widget_set_sensitive (parent, False);
+ if (!was) gtk_widget_set_sensitive (parent, FALSE);
}
G_MODULE_EXPORT void
run_next_cb (GtkButton *button, gpointer user_data)
{
- state *s = global_state_kludge; /* I hate C so much... */
- /* saver_preferences *p = &s->prefs; */
+ XScreenSaverWindow *win = XSCREENSAVER_WINDOW (user_data);
+ state *s = &win->state;
Bool ops = s->preview_suppressed_p;
-
- GtkWidget *list_widget = name_to_widget (s, "list");
+ GtkWidget *list_widget = win->list;
int list_elt = selected_list_element (s);
+ if (s->debug_p) fprintf (stderr, "%s: down arrow\n", blurb());
+
if (list_elt < 0)
list_elt = 0;
else
if (list_elt >= s->list_count)
list_elt = 0;
- s->preview_suppressed_p = True;
+ s->preview_suppressed_p = TRUE;
flush_dialog_changes_and_save (s);
- force_list_select_item (s, list_widget, list_elt, True);
+ force_list_select_item (s, list_widget, list_elt, TRUE);
populate_demo_window (s, list_elt);
populate_popup_window (s);
- run_hack (s, list_elt, False);
+ run_hack (s, list_elt, FALSE);
s->preview_suppressed_p = ops;
}
G_MODULE_EXPORT void
run_prev_cb (GtkButton *button, gpointer user_data)
{
- state *s = global_state_kludge; /* I hate C so much... */
- /* saver_preferences *p = &s->prefs; */
+ XScreenSaverWindow *win = XSCREENSAVER_WINDOW (user_data);
+ state *s = &win->state;
Bool ops = s->preview_suppressed_p;
-
- GtkWidget *list_widget = name_to_widget (s, "list");
+ GtkWidget *list_widget = win->list;
int list_elt = selected_list_element (s);
+ if (s->debug_p) fprintf (stderr, "%s: up arrow\n", blurb());
+
if (list_elt < 0)
list_elt = s->list_count - 1;
else
if (list_elt < 0)
list_elt = s->list_count - 1;
- s->preview_suppressed_p = True;
+ s->preview_suppressed_p = TRUE;
flush_dialog_changes_and_save (s);
- force_list_select_item (s, list_widget, list_elt, True);
+ force_list_select_item (s, list_widget, list_elt, TRUE);
populate_demo_window (s, list_elt);
populate_popup_window (s);
- run_hack (s, list_elt, False);
+ run_hack (s, list_elt, FALSE);
s->preview_suppressed_p = ops;
}
-/* Writes the given settings into prefs.
- Returns true if there was a change, False otherwise.
+/* Writes the settings of the given hack into prefs.
+ Returns true if there was a change, FALSE otherwise.
command and/or visual may be 0, or enabled_p may be -1, meaning "no change".
*/
static Bool
const char *visual)
{
saver_preferences *p = &s->prefs;
- Bool changed = False;
+ Bool changed = FALSE;
screenhack *hack;
int hack_number;
if (list_elt < 0 || list_elt >= s->list_count)
enabled_p != hack->enabled_p)
{
hack->enabled_p = enabled_p;
- changed = True;
+ changed = TRUE;
if (s->debug_p)
fprintf (stderr, "%s: \"%s\": enabled => %d\n",
blurb(), hack->name, enabled_p);
{
if (hack->command) free (hack->command);
hack->command = strdup (command);
- changed = True;
+ changed = TRUE;
if (s->debug_p)
fprintf (stderr, "%s: \"%s\": command => \"%s\"\n",
blurb(), hack->name, command);
{
if (hack->visual) free (hack->visual);
hack->visual = strdup (visual);
- changed = True;
+ changed = TRUE;
if (s->debug_p)
fprintf (stderr, "%s: \"%s\": visual => \"%s\"\n",
blurb(), hack->name, visual);
{
int value;
if (!sec_p || strchr (line, ':'))
- value = parse_time ((char *) line, sec_p, True);
+ value = parse_time ((char *) line, sec_p, TRUE);
else
{
char c;
if (value < 0)
{
char b[255];
- sprintf (b,
- _("Error:\n\n"
- "Unparsable time format: \"%s\"\n"),
+ sprintf (b, _("Unparsable time format: \"%.100s\"\n"),
line);
- warning_dialog (s->toplevel_widget, b, D_NONE, 100);
+ warning_dialog (s->window, _("Error"), b);
}
else
*store = value;
}
-static Bool
-directory_p (const char *path)
-{
- struct stat st;
- if (!path || !*path)
- return False;
- else if (stat (path, &st))
- return False;
- else if (!S_ISDIR (st.st_mode))
- return False;
- else
- return True;
-}
-
-static Bool
-file_p (const char *path)
-{
- struct stat st;
- if (!path || !*path)
- return False;
- else if (stat (path, &st))
- return False;
- else if (S_ISDIR (st.st_mode))
- return False;
- else
- return True;
-}
-
-/* See if the directory has at least one image file under it.
- Recurses to at most the given depth, chasing symlinks.
- To do this properly would mean running "xscreensaver-getimage-file"
- and seeing if it found anything, but that might take a long time to
- build the cache the first time, so this is close enough.
- */
-static Bool
-image_files_p (const char *path, int max_depth)
-{
- const char * const exts[] = {
- "jpg", "jpeg", "pjpeg", "pjpg", "png", "gif",
- "tif", "tiff", "xbm", "xpm", "svg",
- };
- struct dirent *de;
- Bool ok = False;
- DIR *dir = opendir (path);
- if (!dir) return False;
-
- while (!ok && (de = readdir (dir)))
- {
- struct stat st;
- const char *f = de->d_name;
- char *f2;
- if (*f == '.') continue;
-
- f2 = (char *) malloc (strlen(path) + strlen(f) + 10);
- strcpy (f2, path);
- strcat (f2, "/");
- strcat (f2, f);
-
- if (!stat (f2, &st))
- {
- if (S_ISDIR (st.st_mode))
- {
- if (max_depth > 0 && image_files_p (f2, max_depth - 1))
- ok = True;
- }
- else
- {
- int i;
- const char *ext = strrchr (f, '.');
- if (ext)
- for (i = 0; i < countof(exts); i++)
- if (!strcasecmp (ext+1, exts[i]))
- {
- /* fprintf (stderr, "%s: found %s\n", blurb(), f2); */
- ok = True;
- break;
- }
- }
- }
-
- free (f2);
- }
-
- closedir (dir);
- return ok;
-}
-
-
-static char *
-normalize_directory (const char *path)
-{
- int L;
- char *p2, *s;
- if (!path || !*path) return 0;
- L = strlen (path);
- p2 = (char *) malloc (L + 2);
- strcpy (p2, path);
- if (p2[L-1] == '/') /* remove trailing slash */
- p2[--L] = 0;
-
- for (s = p2; s && *s; s++)
- {
- if (*s == '/' &&
- (!strncmp (s, "/../", 4) || /* delete "XYZ/../" */
- !strncmp (s, "/..\000", 4))) /* delete "XYZ/..$" */
- {
- char *s0 = s;
- while (s0 > p2 && s0[-1] != '/')
- s0--;
- if (s0 > p2)
- {
- s0--;
- s += 3;
- /* strcpy (s0, s); */
- memmove(s0, s, strlen(s) + 1);
- s = s0-1;
- }
- }
- else if (*s == '/' && !strncmp (s, "/./", 3)) { /* delete "/./" */
- /* strcpy (s, s+2), s--; */
- memmove(s, s+2, strlen(s+2) + 1);
- s--;
- }
- else if (*s == '/' && !strncmp (s, "/.\000", 3)) /* delete "/.$" */
- *s = 0, s--;
- }
-
- /*
- Normalize consecutive slashes.
- Ignore doubled slashes after ":" to avoid mangling URLs.
- */
-
- for (s = p2; s && *s; s++){
- if (*s == ':') continue;
- if (!s[1] || !s[2]) continue;
- while (s[1] == '/' && s[2] == '/')
- /* strcpy (s+1, s+2); */
- memmove (s+1, s+2, strlen(s+2) + 1);
- }
-
- /* and strip trailing whitespace for good measure. */
- L = strlen(p2);
- while (isspace(p2[L-1]))
- p2[--L] = 0;
-
- return p2;
-}
-
-
typedef struct {
state *s;
int i;
if (flush_changes (closure->s, closure->i,
checked, 0, 0))
- *closure->changed = True;
+ *closure->changed = TRUE;
closure->i++;
static Bool
flush_dialog_changes_and_save (state *s)
{
- Display *dpy = GDK_DISPLAY();
saver_preferences *p = &s->prefs;
saver_preferences P2, *p2 = &P2;
- GtkTreeView *list_widget = GTK_TREE_VIEW (name_to_widget (s, "list"));
+ XScreenSaverWindow *win = XSCREENSAVER_WINDOW (s->window);
+ GtkTreeView *list_widget = GTK_TREE_VIEW (win->list);
GtkTreeModel *model = gtk_tree_view_get_model (list_widget);
FlushForeachClosure closure;
- Bool changed = False;
- GtkWidget *w;
+ Bool changed = FALSE;
- if (s->saving_p) return False;
- s->saving_p = True;
+ if (s->saving_p) return FALSE;
+ s->saving_p = TRUE;
*p2 = *p;
- /* Flush any checkbox changes in the list down into the prefs struct.
+ /* Flush any checkbox changes in the list down into the s2 prefs struct.
*/
closure.s = s;
closure.changed = &changed;
/* Flush the non-hack-specific settings down into the prefs struct.
*/
-# define SECONDS(FIELD,NAME) \
- w = name_to_widget (s, (NAME)); \
- hack_time_text (s, gtk_entry_get_text (GTK_ENTRY (w)), (FIELD), True)
-
-# define MINUTES(FIELD,NAME) \
- w = name_to_widget (s, (NAME)); \
- hack_time_text (s, gtk_entry_get_text (GTK_ENTRY (w)), (FIELD), False)
-
-# define CHECKBOX(FIELD,NAME) \
- w = name_to_widget (s, (NAME)); \
- (FIELD) = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (w))
-
-# define PATHNAME(FIELD,NAME) \
- w = name_to_widget (s, (NAME)); \
- (FIELD) = normalize_directory (gtk_entry_get_text (GTK_ENTRY (w)))
-
-# define TEXT(FIELD,NAME) \
- w = name_to_widget (s, (NAME)); \
- (FIELD) = (char *) g_strdup(gtk_entry_get_text (GTK_ENTRY (w)))
-
- MINUTES (&p2->timeout, "timeout_spinbutton");
- MINUTES (&p2->cycle, "cycle_spinbutton");
- CHECKBOX (p2->lock_p, "lock_button");
- MINUTES (&p2->lock_timeout, "lock_spinbutton");
-
- CHECKBOX (p2->dpms_enabled_p, "dpms_button");
- CHECKBOX (p2->dpms_quickoff_p, "dpms_quickoff_button");
- MINUTES (&p2->dpms_standby, "dpms_standby_spinbutton");
- MINUTES (&p2->dpms_suspend, "dpms_suspend_spinbutton");
- MINUTES (&p2->dpms_off, "dpms_off_spinbutton");
-
- CHECKBOX (p2->grab_desktop_p, "grab_desk_button");
- CHECKBOX (p2->grab_video_p, "grab_video_button");
- CHECKBOX (p2->random_image_p, "grab_image_button");
- PATHNAME (p2->image_directory, "image_text");
-
-#if 0
- CHECKBOX (p2->verbose_p, "verbose_button");
- CHECKBOX (p2->splash_p, "splash_button");
-#endif
+# define SECONDS(PREF,WIDGET) \
+ hack_time_text (s, gtk_entry_get_text (GTK_ENTRY (win->WIDGET)), \
+ &(PREF), TRUE)
+# define MINUTES(PREF,WIDGET) \
+ hack_time_text (s, gtk_entry_get_text (GTK_ENTRY (win->WIDGET)), \
+ &(PREF), FALSE)
+# define CHECKBOX(PREF,WIDGET) \
+ (PREF) = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (win->WIDGET))
+# define PATHNAME(PREF,WIDGET,DIRP) \
+ (PREF) = pathname_tilde ( \
+ gtk_entry_get_text (GTK_ENTRY (win->WIDGET)), TRUE, (DIRP))
+# define TEXT(PREF,WIDGET) \
+ (PREF) = (char *) g_strdup (gtk_entry_get_text (GTK_ENTRY (win->WIDGET)))
+
+ MINUTES (p2->timeout, timeout_spinbutton);
+ MINUTES (p2->cycle, cycle_spinbutton);
+ CHECKBOX (p2->lock_p, lock_button);
+ MINUTES (p2->lock_timeout, lock_spinbutton);
+
+ CHECKBOX (p2->dpms_enabled_p, dpms_button);
+ CHECKBOX (p2->dpms_quickoff_p, dpms_quickoff_button);
+ MINUTES (p2->dpms_standby, dpms_standby_spinbutton);
+ MINUTES (p2->dpms_suspend, dpms_suspend_spinbutton);
+ MINUTES (p2->dpms_off, dpms_off_spinbutton);
+
+ CHECKBOX (p2->grab_desktop_p, grab_desk_button);
+ CHECKBOX (p2->grab_video_p, grab_video_button);
+ CHECKBOX (p2->random_image_p, grab_image_button);
+ PATHNAME (p2->image_directory, image_text, TRUE);
{
- Bool v = False;
- CHECKBOX (v, "text_host_radio"); if (v) p2->tmode = TEXT_DATE;
- CHECKBOX (v, "text_radio"); if (v) p2->tmode = TEXT_LITERAL;
- CHECKBOX (v, "text_file_radio"); if (v) p2->tmode = TEXT_FILE;
- CHECKBOX (v, "text_program_radio"); if (v) p2->tmode = TEXT_PROGRAM;
- CHECKBOX (v, "text_url_radio"); if (v) p2->tmode = TEXT_URL;
- TEXT (p2->text_literal, "text_entry");
- PATHNAME (p2->text_file, "text_file_entry");
- PATHNAME (p2->text_program, "text_program_entry");
- PATHNAME (p2->text_program, "text_program_entry");
- TEXT (p2->text_url, "text_url_entry");
+ Bool v = FALSE;
+ Bool od = s->debug_p;
+ s->debug_p = FALSE;
+ CHECKBOX (v, text_host_radio); if (v) p2->tmode = TEXT_DATE;
+ CHECKBOX (v, text_radio); if (v) p2->tmode = TEXT_LITERAL;
+ CHECKBOX (v, text_file_radio); if (v) p2->tmode = TEXT_FILE;
+ CHECKBOX (v, text_program_radio); if (v) p2->tmode = TEXT_PROGRAM;
+ CHECKBOX (v, text_url_radio); if (v) p2->tmode = TEXT_URL;
+ s->debug_p = od;
}
- CHECKBOX (p2->fade_p, "fade_button");
- CHECKBOX (p2->unfade_p, "unfade_button");
- SECONDS (&p2->fade_seconds, "fade_spinbutton");
+ TEXT (p2->text_literal, text_entry);
+ PATHNAME (p2->text_file, text_file_entry, FALSE);
+ PATHNAME (p2->text_program, text_program_entry, FALSE);
+ TEXT (p2->text_url, text_url_entry);
+
+ CHECKBOX (p2->fade_p, fade_button);
+ CHECKBOX (p2->unfade_p, unfade_button);
+ SECONDS (p2->fade_seconds, fade_spinbutton);
# undef SECONDS
# undef MINUTES
/* Map the mode menu to `saver_mode' enum values. */
{
- GtkComboBox *opt = GTK_COMBO_BOX (name_to_widget (s, "mode_menu"));
+ GtkComboBox *opt = GTK_COMBO_BOX (win->mode_menu);
int menu_elt = gtk_combo_box_get_active (opt);
if (menu_elt < 0 || menu_elt >= countof(mode_menu_order)) abort();
p2->mode = mode_menu_order[menu_elt];
/* Theme menu. */
{
- GtkComboBox *cbox = GTK_COMBO_BOX (name_to_widget (s, "theme_menu"));
+ Display *dpy = s->dpy;
+ GtkComboBox *cbox = GTK_COMBO_BOX (win->theme_menu);
char *themes = get_string_resource (dpy, "themeNames", "ThemeNames");
int menu_index = gtk_combo_box_get_active (cbox);
- char *token = themes;
+ char *token = themes ? themes : "default";
char *name, *last;
int i = 0;
while ((name = strtok_r (token, ",", &last)))
free (p->dialog_theme);
p2->dialog_theme = name2;
if (s->debug_p)
- fprintf (stderr, "%s: theme => \"%s\"\n", blurb(),
+ fprintf (stderr, "%s: theme => \"%s\"\n", blurb(),
p2->dialog_theme);
}
else
}
}
-# define COPY(field, name) \
- if (p->field != p2->field) { \
- changed = True; \
- if (s->debug_p) \
- fprintf (stderr, "%s: %s => %ld\n", blurb(), \
- name, (unsigned long) p2->field); \
- } \
- p->field = p2->field
-
- COPY(mode, "mode");
- COPY(selected_hack, "selected_hack");
-
- COPY(timeout, "timeout");
- COPY(cycle, "cycle");
- COPY(lock_p, "lock_p");
- COPY(lock_timeout, "lock_timeout");
-
- COPY(dpms_enabled_p, "dpms_enabled_p");
- COPY(dpms_quickoff_p, "dpms_quickoff_enabled_p");
- COPY(dpms_standby, "dpms_standby");
- COPY(dpms_suspend, "dpms_suspend");
- COPY(dpms_off, "dpms_off");
-
-#if 0
- COPY(verbose_p, "verbose_p");
- COPY(splash_p, "splash_p");
-#endif
-
- COPY(tmode, "tmode");
-
- COPY(install_cmap_p, "install_cmap_p");
- COPY(fade_p, "fade_p");
- COPY(unfade_p, "unfade_p");
- COPY(fade_seconds, "fade_seconds");
-
- COPY(grab_desktop_p, "grab_desktop_p");
- COPY(grab_video_p, "grab_video_p");
- COPY(random_image_p, "random_image_p");
-
- COPY(dialog_theme, "dialog_theme");
+ /* Copy any changes from s2 into s, and log them.
+ */
+# undef STR
+# define STR(S) #S
+# define COPY(FIELD) \
+ if (p->FIELD != p2->FIELD) { \
+ changed = TRUE; \
+ if (s->debug_p) \
+ fprintf (stderr, "%s: %s: %ld => %ld\n", blurb(),\
+ STR(FIELD), (unsigned long) p->FIELD, \
+ (unsigned long) p2->FIELD); \
+ } \
+ p->FIELD = p2->FIELD
+
+ COPY(mode);
+ COPY(selected_hack);
+
+ COPY(timeout);
+ COPY(cycle);
+ COPY(lock_p);
+ COPY(lock_timeout);
+
+ COPY(dpms_enabled_p);
+ COPY(dpms_quickoff_p);
+ COPY(dpms_standby);
+ COPY(dpms_suspend);
+ COPY(dpms_off);
+
+ COPY(tmode);
+
+ COPY(install_cmap_p);
+ COPY(fade_p);
+ COPY(unfade_p);
+ COPY(fade_seconds);
+
+ COPY(grab_desktop_p);
+ COPY(grab_video_p);
+ COPY(random_image_p);
+
+ COPY(dialog_theme);
# undef COPY
-# define COPYSTR(FIELD,NAME) \
- if (!p->FIELD || \
- !p2->FIELD || \
- strcmp(p->FIELD, p2->FIELD)) \
- { \
- changed = True; \
- if (s->debug_p) \
- fprintf (stderr, "%s: %s => \"%s\"\n", blurb(), NAME, p2->FIELD); \
- } \
- if (p->FIELD && p->FIELD != p2->FIELD) \
- free (p->FIELD); \
- p->FIELD = p2->FIELD; \
+# define COPYSTR(FIELD) \
+ if (!p->FIELD || \
+ !p2->FIELD || \
+ strcmp(p->FIELD, p2->FIELD)) \
+ { \
+ changed = TRUE; \
+ if (s->debug_p) \
+ fprintf (stderr, "%s: %s => \"%s\"\n", blurb(), \
+ STR(FIELD), p2->FIELD); \
+ } \
+ if (p->FIELD && p->FIELD != p2->FIELD) \
+ free (p->FIELD); \
+ p->FIELD = p2->FIELD; \
p2->FIELD = 0
- COPYSTR(image_directory, "image_directory");
- COPYSTR(text_literal, "text_literal");
- COPYSTR(text_file, "text_file");
- COPYSTR(text_program, "text_program");
- COPYSTR(text_url, "text_url");
+ COPYSTR(image_directory);
+ COPYSTR(text_literal);
+ COPYSTR(text_file);
+ COPYSTR(text_program);
+ COPYSTR(text_url);
# undef COPYSTR
populate_prefs_page (s);
if (changed)
{
- sync_server_dpms_settings (GDK_DISPLAY(), p);
+ if (s->dpy)
+ sync_server_dpms_settings (s->dpy, p);
demo_write_init_file (s, p);
/* Tell the xscreensaver daemon to wake up and reload the init file,
until the *old* timeout had expired before reloading. */
if (s->debug_p)
fprintf (stderr, "%s: command: DEACTIVATE\n", blurb());
- xscreensaver_command (GDK_DISPLAY(), XA_DEACTIVATE, 0, 0, 0);
+ if (s->dpy)
+ xscreensaver_command (s->dpy, XA_DEACTIVATE, 0, 0, 0);
}
- s->saving_p = False;
+ s->saving_p = FALSE;
return changed;
}
-/* Flush out any changes made in the popup dialog box (where changes
- take place only when the OK button is clicked.)
- */
-static Bool
-flush_popup_changes_and_save (state *s)
+/* Called when any field in the prefs dialog may have been changed.
+ Referenced by many items in demo.ui. */
+G_MODULE_EXPORT gboolean
+pref_changed_cb (GtkWidget *widget, gpointer user_data)
{
- Bool changed = False;
- saver_preferences *p = &s->prefs;
- int list_elt = selected_list_element (s);
-
- GtkEntry *cmd = GTK_ENTRY (name_to_widget (s, "cmd_text"));
- GtkComboBoxEntry *vis =
- GTK_COMBO_BOX_ENTRY (name_to_widget (s, "visual_combo"));
- GtkEntry *visent = GTK_ENTRY (gtk_bin_get_child (GTK_BIN (vis)));
-
- const char *visual = gtk_entry_get_text (visent);
- const char *command = gtk_entry_get_text (cmd);
-
- char c;
- unsigned long id;
-
- if (s->saving_p) return False;
- s->saving_p = True;
-
- if (list_elt < 0)
- goto DONE;
-
- if (maybe_reload_init_file (s) != 0)
- {
- changed = True;
- goto DONE;
- }
-
- /* Sanity-check and canonicalize whatever the user typed into the combo box.
- */
- if (!strcasecmp (visual, "")) visual = "";
- else if (!strcasecmp (visual, "any")) visual = "";
- else if (!strcasecmp (visual, "default")) visual = "Default";
- else if (!strcasecmp (visual, "default-n")) visual = "Default-N";
- else if (!strcasecmp (visual, "default-i")) visual = "Default-I";
- else if (!strcasecmp (visual, "best")) visual = "Best";
- else if (!strcasecmp (visual, "mono")) visual = "Mono";
- else if (!strcasecmp (visual, "monochrome")) visual = "Mono";
- else if (!strcasecmp (visual, "gray")) visual = "Gray";
- else if (!strcasecmp (visual, "grey")) visual = "Gray";
- else if (!strcasecmp (visual, "color")) visual = "Color";
- else if (!strcasecmp (visual, "gl")) visual = "GL";
- else if (!strcasecmp (visual, "staticgray")) visual = "StaticGray";
- else if (!strcasecmp (visual, "staticcolor")) visual = "StaticColor";
- else if (!strcasecmp (visual, "truecolor")) visual = "TrueColor";
- else if (!strcasecmp (visual, "grayscale")) visual = "GrayScale";
- else if (!strcasecmp (visual, "greyscale")) visual = "GrayScale";
- else if (!strcasecmp (visual, "pseudocolor")) visual = "PseudoColor";
- else if (!strcasecmp (visual, "directcolor")) visual = "DirectColor";
- else if (1 == sscanf (visual, " %lu %c", &id, &c)) ;
- else if (1 == sscanf (visual, " 0x%lx %c", &id, &c)) ;
- else
- {
- gdk_beep (); /* unparsable */
- visual = "";
- gtk_entry_set_text (visent, _("Any"));
- }
+ XScreenSaverWindow *win = XSCREENSAVER_WINDOW (user_data);
+ state *s = &win->state;
- changed = flush_changes (s, list_elt, -1, command, visual);
- if (changed)
+ if (s->debug_p)
{
- changed = demo_write_init_file (s, p);
-
- /* Do this to re-launch the hack if (and only if) the command line
- has changed. */
- populate_demo_window (s, selected_list_element (s));
+ if (s->initializing_p)
+ fprintf (stderr, "%s: (pref changed)\n", blurb());
+ else
+ fprintf (stderr, "%s: pref changed\n", blurb());
}
- DONE:
- s->saving_p = False;
- return changed;
-}
-
-
-/* Called when any field in the prefs dialog may have been changed.
- Referenced by many items in xscreensaver.ui. */
-G_MODULE_EXPORT void
-pref_changed_cb (GtkWidget *widget, gpointer user_data)
-{
- state *s = global_state_kludge; /* I hate C so much... */
if (! s->initializing_p)
{
- s->initializing_p = True;
+ s->initializing_p = TRUE;
flush_dialog_changes_and_save (s);
- s->initializing_p = False;
+ s->initializing_p = FALSE;
}
+ return GDK_EVENT_PROPAGATE;
}
+
/* Same as pref_changed_cb but different. */
G_MODULE_EXPORT gboolean
pref_changed_event_cb (GtkWidget *widget, GdkEvent *event, gpointer user_data)
{
pref_changed_cb (widget, user_data);
- return FALSE;
+ return GDK_EVENT_PROPAGATE;
}
+
/* Callback on menu items in the "mode" options menu.
*/
G_MODULE_EXPORT void
mode_menu_item_cb (GtkWidget *widget, gpointer user_data)
{
- state *s = (state *) user_data;
+ XScreenSaverWindow *win = XSCREENSAVER_WINDOW (user_data);
+ state *s = &win->state;
saver_preferences *p = &s->prefs;
- GtkWidget *list = name_to_widget (s, "list");
+ GtkWidget *list = win->list;
int list_elt;
int menu_index = gtk_combo_box_get_active (GTK_COMBO_BOX (widget));
saver_mode new_mode = mode_menu_order[menu_index];
+ if (s->initializing_p) return; /* Called as a spurious side-effect */
+
+ if (s->debug_p) fprintf (stderr, "%s: mode menu\n", blurb());
+
/* Keep the same list element displayed as before; except if we're
switching *to* "one screensaver" mode from any other mode, set
"the one" to be that which is currently selected.
p->mode = new_mode;
populate_demo_window (s, list_elt);
populate_popup_window (s);
- force_list_select_item (s, list, list_elt, True);
+ force_list_select_item (s, list, list_elt, TRUE);
p->mode = old_mode; /* put it back, so the init file gets written */
}
}
+/* Remove the "random-same" item from the screen saver mode menu
+ (we don't display that unless there are multiple screens.)
+ */
+static void
+hide_mode_menu_random_same (state *s)
+{
+ XScreenSaverWindow *win = XSCREENSAVER_WINDOW (s->window);
+ GtkComboBox *opt = GTK_COMBO_BOX (win->mode_menu);
+ GtkTreeModel *list = gtk_combo_box_get_model (opt);
+ unsigned int i;
+ for (i = 0; i < countof(mode_menu_order); i++)
+ {
+ if (mode_menu_order[i] == RANDOM_HACKS_SAME)
+ {
+ GtkTreeIter iter;
+ gtk_tree_model_iter_nth_child (list, &iter, NULL, i);
+ gtk_list_store_remove (GTK_LIST_STORE (list), &iter);
+ break;
+ }
+ }
+
+ /* recompute option-menu size */
+ gtk_widget_unrealize (GTK_WIDGET (opt));
+ gtk_widget_realize (GTK_WIDGET (opt));
+}
+
+
/* Called when a new tab is selected. */
G_MODULE_EXPORT void
-switch_page_cb (GtkNotebook *notebook, GtkNotebookPage *page,
+switch_page_cb (GtkNotebook *notebook, GtkWidget *page,
gint page_num, gpointer user_data)
{
- state *s = global_state_kludge; /* I hate C so much... */
+ XScreenSaverWindow *win = XSCREENSAVER_WINDOW (user_data);
+ state *s = &win->state;
+
+ if (s->debug_p) fprintf (stderr, "%s: tab changed\n", blurb());
pref_changed_cb (GTK_WIDGET (notebook), user_data);
/* If we're switching to page 0, schedule the current hack to be run.
schedule_preview (s, 0);
}
+
/* Called when a line is double-clicked in the saver list. */
static void
-list_activated_cb (GtkTreeView *list,
- GtkTreePath *path,
- GtkTreeViewColumn *column,
- gpointer data)
+list_activated_cb (GtkTreeView *list, GtkTreePath *path,
+ GtkTreeViewColumn *column, gpointer data)
{
state *s = data;
char *str;
int list_elt;
- if (gdk_pointer_is_grabbed()) return;
+ if (s->debug_p) fprintf (stderr, "%s: list activated\n", blurb());
+
+ /* I did this in Gtk 2 and I don't remember why:
+ if (gdk_pointer_is_grabbed()) return;
+ I don't understand how to use gdk_display_device_is_grabbed().
+ */
str = gtk_tree_path_to_string (path);
list_elt = strtol (str, NULL, 10);
g_free (str);
if (list_elt >= 0)
- run_hack (s, list_elt, True);
+ run_hack (s, list_elt, TRUE);
}
/* Called when a line is selected/highlighted in the saver list. */
static void
list_select_changed_cb (GtkTreeSelection *selection, gpointer data)
{
- state *s = (state *)data;
+ state *s = (state *) data;
GtkTreeModel *model;
GtkTreeIter iter;
GtkTreePath *path;
char *str;
int list_elt;
+ if (s->debug_p) fprintf (stderr, "%s: list selection changed\n", blurb());
+
if (!gtk_tree_selection_get_selected (selection, &model, &iter))
return;
*/
static void
list_checkbox_cb (GtkCellRendererToggle *toggle,
- gchar *path_string,
- gpointer data)
+ gchar *path_string, gpointer data)
{
state *s = (state *) data;
- GtkScrolledWindow *scroller =
- GTK_SCROLLED_WINDOW (name_to_widget (s, "scroller"));
- GtkTreeView *list = GTK_TREE_VIEW (name_to_widget (s, "list"));
+ XScreenSaverWindow *win = XSCREENSAVER_WINDOW (s->window);
+ GtkScrolledWindow *scroller = GTK_SCROLLED_WINDOW (win->scroller);
+ GtkTreeView *list = GTK_TREE_VIEW (win->list);
GtkTreeModel *model = gtk_tree_view_get_model (list);
GtkTreePath *path = gtk_tree_path_new_from_string (path_string);
GtkTreeIter iter;
int list_elt;
+ if (s->debug_p) fprintf (stderr, "%s: list checkbox\n", blurb());
+
if (!gtk_tree_model_get_iter (model, &iter, path))
{
g_warning ("bad path: %s", path_string);
/* remember previous scroll position of the top of the list */
adj = gtk_scrolled_window_get_vadjustment (scroller);
- scroll_top = GET_ADJ_VALUE (adj);
+ scroll_top = gtk_adjustment_get_value (adj);
flush_dialog_changes_and_save (s);
- force_list_select_item (s, GTK_WIDGET (list), list_elt, False);
+ force_list_select_item (s, GTK_WIDGET (list), list_elt, FALSE);
populate_demo_window (s, list_elt);
populate_popup_window (s);
if (!warn) return;
sprintf (buf,
- _("Warning: %s:\n\n"
- "\"%.100s\"\n\n"
+ _("%.100s:\n\n"
+ " %.100s\n\n"
"Select the 'Advanced' tab and choose a directory with some\n"
"pictures in it, or you're going to see a lot of boring colorbars!"),
warn,
- p->image_directory);
- warning_dialog (s->toplevel_widget, buf, D_NONE, 3);
+ (p->image_directory ? p->image_directory : ""));
+ warning_dialog (s->window, _("Warning"), buf);
}
-static Bool validate_image_directory_cancelled_p;
-
/* "Cancel" button on the validate image directory progress dialog. */
static void
-validate_image_directory_cancel_cb (GtkWidget *widget, gpointer user_data)
+validate_image_directory_cancel_cb (GtkDialog *dialog, gint response_id,
+ gpointer user_data)
{
- validate_image_directory_cancelled_p = True;
- warning_dialog_dismiss_cb (widget, user_data);
+ Bool *closed = (Bool *) user_data;
+ *closed = TRUE;
+ gtk_widget_destroy (GTK_WIDGET (dialog));
}
-/* Close (X) button on the validate image directory progress dialog. */
-static gboolean
-validate_image_directory_close_cb (GtkWidget *widget, GdkEvent *event,
- gpointer data)
+
+typedef struct {
+ GtkWidget *dialog;
+ int timer_id;
+} validate_timer_closure;
+
+static int
+validate_timer_show (gpointer data)
{
- validate_image_directory_cancel_cb (widget, data);
- return TRUE;
+ validate_timer_closure *vtc = (validate_timer_closure *) data;
+ gtk_widget_show_all (vtc->dialog);
+ vtc->timer_id = 0;
+ return FALSE;
}
-
/* If the directory or URL does not have images in it, pop up a warning
dialog and return false. This happens when the imageDirectory preference
is edited, and might be slow.
+
+ It does this by running "xscreensaver-getimage-file", which has the side
+ effect of populating the image cache for that directory. Since that will
+ take a while if there are a lot of files, this also pops up a progress
+ dialog with a spinner in it, and a cancel button. That progress dialog
+ only pops up if the validation has already been running for a little
+ while, so that it doesn't flicker for small or pre-cached directories.
*/
static Bool
validate_image_directory (state *s, const char *path)
{
- GtkWidget *parent = s->toplevel_widget;
- GtkWidget *dialog = gtk_dialog_new ();
- GtkWidget *label = 0;
- GtkWidget *cancel = 0;
+ validate_timer_closure vtc;
char buf[1024];
char err[1024];
+ GtkWidget *dialog, *content_area, *label, *spinner;
+ int margin = 32;
+ Bool closed_p = FALSE;
- sprintf (buf, _("Populating image cache for \"%.100s\"..."), path);
+ dialog = gtk_dialog_new_with_buttons (_("XScreenSaver Image Cache"),
+ s->window,
+ GTK_DIALOG_DESTROY_WITH_PARENT,
+ _("_Cancel"), GTK_RESPONSE_CLOSE,
+ NULL);
+ sprintf (buf, _("Populating image cache for \"%.100s\"..."), path);
+ content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog));
label = gtk_label_new (buf);
- gtk_label_set_selectable (GTK_LABEL (label), TRUE);
- gtk_box_pack_start (GTK_BOX (GET_CONTENT_AREA (GTK_DIALOG (dialog))),
- label, TRUE, TRUE, 0);
- gtk_widget_show (label);
-
- label = gtk_label_new ("");
- gtk_box_pack_start (GTK_BOX (GET_CONTENT_AREA (GTK_DIALOG (dialog))),
- label, TRUE, TRUE, 0);
- gtk_widget_show (label);
-
- label = gtk_hbutton_box_new ();
- gtk_box_pack_start (GTK_BOX (GET_ACTION_AREA (GTK_DIALOG (dialog))),
- label, TRUE, TRUE, 0);
-
- cancel = gtk_button_new_from_stock (GTK_STOCK_CANCEL);
- gtk_container_add (GTK_CONTAINER (label), cancel);
-
- gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_CENTER);
- gtk_container_set_border_width (GTK_CONTAINER (dialog), 10);
- gtk_window_set_title (GTK_WINDOW (dialog), progclass);
- SET_CAN_DEFAULT (cancel);
- gtk_widget_show (cancel);
- gtk_widget_grab_focus (cancel);
- gtk_widget_show (label);
- gtk_widget_show (dialog);
-
- validate_image_directory_cancelled_p = False;
-
- gtk_signal_connect_object (GTK_OBJECT (cancel), "clicked",
- GTK_SIGNAL_FUNC (validate_image_directory_cancel_cb),
- (gpointer) dialog);
- gtk_signal_connect (GTK_OBJECT (dialog), "delete_event",
- GTK_SIGNAL_FUNC (validate_image_directory_close_cb),
- (gpointer *) dialog);
-
- gdk_window_set_transient_for (GET_WINDOW (GTK_WIDGET (dialog)),
- GET_WINDOW (GTK_WIDGET (parent)));
-
- gtk_window_present (GTK_WINDOW (dialog));
+
+ gtk_widget_set_margin_start (label, margin);
+ gtk_widget_set_margin_end (label, margin);
+ gtk_widget_set_margin_top (label, margin);
+ gtk_widget_set_margin_bottom (label, margin / 2);
+ gtk_container_add (GTK_CONTAINER (content_area), label);
+
+ spinner = gtk_spinner_new();
+ gtk_spinner_start (GTK_SPINNER (spinner));
+ gtk_container_add (GTK_CONTAINER (content_area), spinner);
+ gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE);
+
+ g_signal_connect (dialog, "response",
+ G_CALLBACK (validate_image_directory_cancel_cb),
+ &closed_p);
+ g_signal_connect (dialog, "close",
+ G_CALLBACK (validate_image_directory_cancel_cb),
+ &closed_p);
+
+ /* Only pop up the dialog box with the spinner if this has already taken
+ a little while, so that if it completes immediately, we don't flicker.
+ */
+ vtc.dialog = dialog;
+ vtc.timer_id = g_timeout_add (1000, validate_timer_show, &vtc);
while (gtk_events_pending ()) /* Paint the window now. */
gtk_main_iteration ();
{
- Display *dpy = GDK_DISPLAY();
+ Display *dpy = s->dpy;
pid_t forked;
int fds [2];
int in, out;
fd_set rset;
struct timeval tv;
tv.tv_sec = 0;
- tv.tv_usec = 1000000 / 10;
+ tv.tv_usec = 1000000 / 10; /* Repaint widgets at 10 fps */
FD_ZERO (&rset);
FD_SET (in, &rset);
if (0 < select (in+1, &rset, 0, 0, &tv))
if (n <= 0)
{
if (s->debug_p)
- fprintf (stderr, "%s: read EOF\n", blurb());
+ fprintf (stderr, "%s: %s: read EOF\n", blurb(), av[0]);
break;
}
else
*ss = 0;
if (s->debug_p)
- fprintf (stderr, "%s: read: \"%s\"\n", blurb(),
- ss - n);
+ fprintf (stderr, "%s: %s: read: \"%s\"\n", blurb(),
+ av[0], ss - n);
}
}
+ /* Service Gtk events and timers */
while (gtk_events_pending ())
gtk_main_iteration ();
- if (validate_image_directory_cancelled_p)
+ if (closed_p)
{
kill (forked, SIGTERM);
}
}
- if (! validate_image_directory_cancelled_p)
- {
- if (s->debug_p)
- fprintf (stderr, "%s: dismiss\n", blurb());
- warning_dialog_dismiss_cb (dialog, dialog);
- }
+ if (vtc.timer_id) /* Remove the popup timer if it hasn't fired. */
+ g_source_remove (vtc.timer_id);
+
+ if (s->debug_p)
+ fprintf (stderr, "%s: dismiss\n", blurb());
+
+ if (! closed_p)
+ gtk_widget_destroy (dialog);
FAIL:
if (*err)
{
- sprintf (buf, _("Warning:\n\n%s\n"), err);
- warning_dialog (s->toplevel_widget, buf, D_NONE, 1);
- return False;
+ warning_dialog (s->window, _("Warning"), err);
+ return FALSE;
}
- return True;
+ return TRUE;
}
-typedef struct {
- state *state;
- GtkFileSelection *widget;
-} file_selection_data;
-
-
-
/* Called when the imageDirectory text field is edited directly (focus-out).
*/
G_MODULE_EXPORT gboolean
image_text_pref_changed_event_cb (GtkWidget *widget, GdkEvent *event,
gpointer user_data)
{
- state *s = global_state_kludge; /* I hate C so much... */
+ XScreenSaverWindow *win = XSCREENSAVER_WINDOW (user_data);
+ state *s = &win->state;
saver_preferences *p = &s->prefs;
- GtkEntry *w = GTK_ENTRY (name_to_widget (s, "image_text"));
- const char *path = gtk_entry_get_text (w);
+ GtkEntry *w = GTK_ENTRY (win->image_text);
+ const char *str = gtk_entry_get_text (w);
+ char *path = pathname_tilde (str, TRUE, TRUE);
- if (p->image_directory && !strcmp(p->image_directory, path))
+ if (s->debug_p) fprintf (stderr, "%s: imagedir text edited\n", blurb());
+
+ if (p->image_directory && strcmp(p->image_directory, path))
{
+ if (s->debug_p)
+ fprintf (stderr, "%s: imagedir validating \"%s\" -> \"%s\"\n", blurb(),
+ p->image_directory, path);
if (! validate_image_directory (s, path))
- /* Don't save the bad new value into the preferences. */
- return FALSE;
+ {
+ /* Don't save the bad new value into the preferences. */
+ free (path);
+ return GDK_EVENT_PROPAGATE;
+ }
}
- return pref_changed_event_cb (widget, event, user_data);
+ free (path);
+ pref_changed_event_cb (widget, event, user_data);
+ return GDK_EVENT_PROPAGATE;
}
-static void
-store_image_directory (GtkWidget *button, gpointer user_data)
+/* Run a modal file selector dialog.
+ Select a file, directory, or program.
+ Normalize the resultant path and store it into the string pointer.
+ Also update the text field with the new path.
+ Returns true if any changes made.
+ */
+gboolean
+file_chooser (GtkWindow *parent, GtkEntry *entry, char **retP,
+ const char *title, gboolean verbose_p,
+ gboolean dir_p, gboolean program_p)
{
- file_selection_data *fsd = (file_selection_data *) user_data;
- state *s = fsd->state;
- GtkFileSelection *selector = fsd->widget;
- saver_preferences *p = &s->prefs;
- char *path =
- normalize_directory (gtk_file_selection_get_filename (selector));
-
- if (s->debug_p)
- fprintf (stderr, "%s: selected \"%s\n", blurb(), path);
-
- if (! validate_image_directory (s, path))
- {
- /* Don't save the bad new value into the preferences. */
- free (path);
- return;
- }
-
- if (p->image_directory && !strcmp(p->image_directory, path))
+ gint res;
+ gboolean changed_p = FALSE;
+ GtkWidget *dialog =
+ gtk_file_chooser_dialog_new (title, parent,
+ (dir_p
+ ? GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER
+ : GTK_FILE_CHOOSER_ACTION_OPEN),
+ _("_Cancel"), GTK_RESPONSE_CANCEL,
+ _("_Select"), GTK_RESPONSE_ACCEPT,
+ NULL);
+ const char *old = gtk_entry_get_text (entry); /* not *retP */
+
+ if (*old)
{
- free (path);
- return; /* no change */
- }
-
- if (p->image_directory) free (p->image_directory);
- p->image_directory = path;
-
- gtk_entry_set_text (GTK_ENTRY (name_to_widget (s, "image_text")),
- (p->image_directory ? p->image_directory : ""));
- demo_write_init_file (s, p);
-}
-
-
-static void
-store_text_file (GtkWidget *button, gpointer user_data)
-{
- file_selection_data *fsd = (file_selection_data *) user_data;
- state *s = fsd->state;
- GtkFileSelection *selector = fsd->widget;
- GtkWidget *top = s->toplevel_widget;
- saver_preferences *p = &s->prefs;
- char *path =
- normalize_directory (gtk_file_selection_get_filename (selector));
+ char *p2 = pathname_tilde (old, FALSE, dir_p);
+ GFile *gf;
- if (p->text_file && !strcmp(p->text_file, path))
- {
- free (path);
- return; /* no change */
- }
+ /* If it's a command line and it begins with an absolute path,
+ default to that file and its directory. */
+ if (program_p && (*p2 == '/' || *p2 == '~'))
+ {
+ char *s = strpbrk (p2, " \t\r\n");
+ if (s) *s = 0;
+ program_p = FALSE;
+ }
- if (!file_p (path))
- {
- char b[255];
- sprintf (b, _("Error:\n\n" "File does not exist: \"%s\"\n"), path);
- warning_dialog (GTK_WIDGET (top), b, D_NONE, 100);
- free (path);
- return;
+ gf = g_file_new_for_path (p2);
+ if (! program_p)
+ {
+ gtk_file_chooser_set_file (GTK_FILE_CHOOSER (dialog), gf, NULL);
+ if (verbose_p)
+ fprintf (stderr, "%s: chooser: default \"%s\"\n", blurb(), p2);
+ }
+ free (p2);
+ g_object_unref (gf);
}
- if (p->text_file) free (p->text_file);
- p->text_file = path;
-
- gtk_entry_set_text (GTK_ENTRY (name_to_widget (s, "text_file_entry")),
- (p->text_file ? p->text_file : ""));
- demo_write_init_file (s, p);
-}
-
-
-static void
-store_text_program (GtkWidget *button, gpointer user_data)
-{
- file_selection_data *fsd = (file_selection_data *) user_data;
- state *s = fsd->state;
- GtkFileSelection *selector = fsd->widget;
- /*GtkWidget *top = s->toplevel_widget;*/
- saver_preferences *p = &s->prefs;
- char *path =
- normalize_directory (gtk_file_selection_get_filename (selector));
-
- if (p->text_program && !strcmp(p->text_program, path))
+ res = gtk_dialog_run (GTK_DIALOG (dialog));
+ if (res == GTK_RESPONSE_ACCEPT)
{
- free (path);
- return; /* no change */
- }
+ GtkFileChooser *chooser = GTK_FILE_CHOOSER (dialog);
+ char *str = gtk_file_chooser_get_filename (chooser);
+ char *path = pathname_tilde (str, TRUE, dir_p);
+ g_free (str);
-# if 0
- if (!file_p (path))
- {
- char b[255];
- sprintf (b, _("Error:\n\n" "File does not exist: \"%s\"\n"), path);
- warning_dialog (GTK_WIDGET (top), b, D_NONE, 100);
- return;
+ if (*retP && !strcmp (*retP, path))
+ {
+ if (verbose_p)
+ fprintf (stderr, "%s: chooser: unchanged\n", blurb());
+ free (path); /* no change */
+ }
+ else if (dir_p && !directory_p (path))
+ {
+ char b[255];
+ sprintf (b, _("Directory does not exist: \"%.100s\"\n"), path);
+ warning_dialog (parent, _("Error"), b);
+ free (path); /* no change */
+ }
+ else if (!dir_p && !file_p (path))
+ {
+ char b[255];
+ sprintf (b, _("File does not exist: \"%.100s\"\n"), path);
+ warning_dialog (parent, _("Error"), b);
+ free (path); /* no change */
+ }
+ else
+ {
+ if (verbose_p)
+ fprintf (stderr, "%s: chooser: \"%s\" -> \"%s\n",
+ blurb(), *retP, path);
+ if (*retP) free (*retP);
+ *retP = path;
+ gtk_entry_set_text (entry, path);
+ changed_p = TRUE;
+ }
}
-# endif
-
- if (p->text_program) free (p->text_program);
- p->text_program = path;
-
- gtk_entry_set_text (GTK_ENTRY (name_to_widget (s, "text_program_entry")),
- (p->text_program ? p->text_program : ""));
- demo_write_init_file (s, p);
-}
-
-
-
-/* "Cancel" button on any "Browse" file selector */
-static void
-browse_any_dir_cancel (GtkWidget *button, gpointer user_data)
-{
- file_selection_data *fsd = (file_selection_data *) user_data;
- gtk_widget_hide (GTK_WIDGET (fsd->widget));
-}
-
-/* "OK" button on imageDirectory "Browse" file selector */
-static void
-browse_image_dir_ok (GtkWidget *button, gpointer user_data)
-{
- browse_any_dir_cancel (button, user_data);
- store_image_directory (button, user_data);
-}
-
-/* "OK" button on textProgram "Browse" file selector */
-static void
-browse_text_file_ok (GtkWidget *button, gpointer user_data)
-{
- browse_any_dir_cancel (button, user_data);
- store_text_file (button, user_data);
-}
-
-/* "OK" button on textProgram "Browse" file selector */
-static void
-browse_text_program_ok (GtkWidget *button, gpointer user_data)
-{
- browse_any_dir_cancel (button, user_data);
- store_text_program (button, user_data);
-}
+ else if (verbose_p)
+ fprintf (stderr, "%s: chooser: cancelled\n", blurb());
-/* Close (X) button on any "Browse" file selector */
-static void
-browse_any_dir_close (GtkWidget *widget, GdkEvent *event, gpointer user_data)
-{
- browse_any_dir_cancel (widget, user_data);
+ gtk_widget_destroy (dialog);
+ return changed_p;
}
G_MODULE_EXPORT void
browse_image_dir_cb (GtkButton *button, gpointer user_data)
{
- state *s = global_state_kludge; /* I hate C so much... */
+ XScreenSaverWindow *win = XSCREENSAVER_WINDOW (user_data);
+ state *s = &win->state;
saver_preferences *p = &s->prefs;
- static file_selection_data *fsd = 0;
-
- GtkFileSelection *selector = GTK_FILE_SELECTION(
- gtk_file_selection_new ("Please select the image directory."));
-
- if (!fsd)
- fsd = (file_selection_data *) malloc (sizeof (*fsd));
-
- fsd->widget = selector;
- fsd->state = s;
-
- if (p->image_directory && *p->image_directory)
+ char *old = strdup (p->image_directory);
+
+ if (s->debug_p) fprintf (stderr, "%s: imagedir browse button\n", blurb());
+ if (file_chooser (GTK_WINDOW (win),
+ GTK_ENTRY (win->image_text),
+ &p->image_directory,
+ _("Please select the image directory."),
+ s->debug_p, TRUE, FALSE))
{
- /* It has to end in a slash, I guess? */
- char *ss = (char *) malloc (strlen (p->image_directory) + 2);
- strcpy (ss, p->image_directory);
- if (ss[strlen(ss)-1] != '/')
- strcat (ss, "/");
- gtk_file_selection_set_filename (selector, ss);
- free (ss);
+ if (validate_image_directory (s, p->image_directory))
+ demo_write_init_file (s, p);
+ else
+ {
+ /* Don't save the bad new value into the preferences. */
+ free (p->image_directory);
+ p->image_directory = old;
+ old = 0;
+ }
}
- gtk_file_selection_hide_fileop_buttons (selector);
- gtk_signal_connect (GTK_OBJECT (selector->ok_button),
- "clicked", GTK_SIGNAL_FUNC (browse_image_dir_ok),
- (gpointer *) fsd);
- gtk_signal_connect (GTK_OBJECT (selector->cancel_button),
- "clicked", GTK_SIGNAL_FUNC (browse_any_dir_cancel),
- (gpointer *) fsd);
- gtk_signal_connect (GTK_OBJECT (selector), "delete_event",
- GTK_SIGNAL_FUNC (browse_any_dir_close),
- (gpointer *) fsd);
-
- gtk_widget_set_sensitive (GTK_WIDGET (selector->file_list), False);
-
- gtk_window_set_modal (GTK_WINDOW (selector), True);
- gtk_widget_show (GTK_WIDGET (selector));
+ if (old) free (old);
}
G_MODULE_EXPORT void
browse_text_file_cb (GtkButton *button, gpointer user_data)
{
- state *s = global_state_kludge; /* I hate C so much... */
+ XScreenSaverWindow *win = XSCREENSAVER_WINDOW (user_data);
+ state *s = &win->state;
saver_preferences *p = &s->prefs;
- static file_selection_data *fsd = 0;
-
- GtkFileSelection *selector = GTK_FILE_SELECTION(
- gtk_file_selection_new ("Please select a text file."));
-
- if (!fsd)
- fsd = (file_selection_data *) malloc (sizeof (*fsd));
-
- fsd->widget = selector;
- fsd->state = s;
-
- if (p->text_file && *p->text_file)
- gtk_file_selection_set_filename (selector, p->text_file);
-
- gtk_file_selection_hide_fileop_buttons (selector);
- gtk_signal_connect (GTK_OBJECT (selector->ok_button),
- "clicked", GTK_SIGNAL_FUNC (browse_text_file_ok),
- (gpointer *) fsd);
- gtk_signal_connect (GTK_OBJECT (selector->cancel_button),
- "clicked", GTK_SIGNAL_FUNC (browse_any_dir_cancel),
- (gpointer *) fsd);
- gtk_signal_connect (GTK_OBJECT (selector), "delete_event",
- GTK_SIGNAL_FUNC (browse_any_dir_close),
- (gpointer *) fsd);
- gtk_window_set_modal (GTK_WINDOW (selector), True);
- gtk_widget_show (GTK_WIDGET (selector));
+ if (s->debug_p) fprintf (stderr, "%s: textfile browse button\n", blurb());
+ if (file_chooser (GTK_WINDOW (win),
+ GTK_ENTRY (win->text_file_entry),
+ &p->text_file,
+ _("Please select a text file."),
+ s->debug_p, FALSE, FALSE))
+ demo_write_init_file (s, p);
}
G_MODULE_EXPORT void
browse_text_program_cb (GtkButton *button, gpointer user_data)
{
- state *s = global_state_kludge; /* I hate C so much... */
+ XScreenSaverWindow *win = XSCREENSAVER_WINDOW (user_data);
+ state *s = &win->state;
saver_preferences *p = &s->prefs;
- static file_selection_data *fsd = 0;
- GtkFileSelection *selector = GTK_FILE_SELECTION(
- gtk_file_selection_new ("Please select a text-generating program."));
-
- if (!fsd)
- fsd = (file_selection_data *) malloc (sizeof (*fsd));
-
- fsd->widget = selector;
- fsd->state = s;
-
- if (p->text_program && *p->text_program)
- gtk_file_selection_set_filename (selector, p->text_program);
-
- gtk_file_selection_hide_fileop_buttons (selector);
- gtk_signal_connect (GTK_OBJECT (selector->ok_button),
- "clicked", GTK_SIGNAL_FUNC (browse_text_program_ok),
- (gpointer *) fsd);
- gtk_signal_connect (GTK_OBJECT (selector->cancel_button),
- "clicked", GTK_SIGNAL_FUNC (browse_any_dir_cancel),
- (gpointer *) fsd);
- gtk_signal_connect (GTK_OBJECT (selector), "delete_event",
- GTK_SIGNAL_FUNC (browse_any_dir_close),
- (gpointer *) fsd);
-
- gtk_window_set_modal (GTK_WINDOW (selector), True);
- gtk_widget_show (GTK_WIDGET (selector));
+ if (s->debug_p) fprintf (stderr, "%s: textprogram browse button\n", blurb());
+ if (file_chooser (GTK_WINDOW (win),
+ GTK_ENTRY (win->text_program_entry),
+ &p->text_program,
+ _("Please select a text-generating program."),
+ s->debug_p, FALSE, TRUE))
+ demo_write_init_file (s, p);
}
G_MODULE_EXPORT void
preview_theme_cb (GtkWidget *w, gpointer user_data)
{
+ XScreenSaverWindow *win = XSCREENSAVER_WINDOW (user_data);
+ state *s = &win->state;
+
+ if (s->debug_p) fprintf (stderr, "%s: preview theme button\n", blurb());
+
/* Settings button is disabled with --splash --splash so that we don't
end up with two copies of xscreensaver-settings running. */
if (system ("xscreensaver-auth --splash --splash &") < 0)
G_MODULE_EXPORT void
settings_cb (GtkButton *button, gpointer user_data)
{
- state *s = global_state_kludge; /* I hate C so much... */
+ XScreenSaverWindow *win = XSCREENSAVER_WINDOW (user_data);
+ state *s = &win->state;
+ saver_preferences *p = &s->prefs;
+ XScreenSaverDialog *dialog = XSCREENSAVER_DIALOG (s->dialog);
int list_elt = selected_list_element (s);
+ if (s->debug_p) fprintf (stderr, "%s: settings button\n", blurb());
+
populate_demo_window (s, list_elt); /* reset the widget */
populate_popup_window (s); /* create UI on popup window */
- gtk_widget_show (s->popup_widget);
-}
-static void
-settings_sync_cmd_text (state *s)
-{
- GtkWidget *cmd = GTK_WIDGET (name_to_widget (s, "cmd_text"));
- char *cmd_line = get_configurator_command_line (s->cdata, False);
- gtk_entry_set_text (GTK_ENTRY (cmd), cmd_line);
- gtk_entry_set_position (GTK_ENTRY (cmd), strlen (cmd_line));
- free (cmd_line);
-}
+ /* Pre-select the "Standard" page. */
+ settings_std_cb (NULL, s->dialog);
+ settings_switch_page_cb (GTK_NOTEBOOK (dialog->opt_notebook), NULL, 0,
+ s->dialog);
-/* The "Advanced" button on the settings dialog. */
-G_MODULE_EXPORT void
-settings_adv_cb (GtkButton *button, gpointer user_data)
-{
- state *s = global_state_kludge; /* I hate C so much... */
- GtkNotebook *notebook =
- GTK_NOTEBOOK (name_to_widget (s, "opt_notebook"));
+ /* If there is no saved position for the dialog, position it to the
+ right of the main window. See also restore_window_position(),
+ which already ran at startup. */
+ {
+ int win_x, win_y, dialog_x, dialog_y;
+ char dummy;
+ char *old = p->settings_geom;
+
+ if (!old || !*old ||
+ 4 != sscanf (old, " %d , %d %d , %d %c",
+ &win_x, &win_y, &dialog_x, &dialog_y, &dummy))
+ win_x = win_y = dialog_x = dialog_y = -1;
+
+ if (dialog_x <= 0 && dialog_y <= 0)
+ {
+ int win_w, win_h;
+ gtk_window_get_position (GTK_WINDOW (s->window), &win_x, &win_y);
+ gtk_window_get_size (GTK_WINDOW (s->window), &win_w, &win_h);
+ dialog_x = win_x + win_w + 8;
+ dialog_y = win_y;
+ gtk_window_move (GTK_WINDOW (s->dialog), dialog_x, dialog_y);
+ }
+ }
- settings_sync_cmd_text (s);
- gtk_notebook_set_page (notebook, 1);
-}
-
-/* The "Standard" button on the settings dialog. */
-G_MODULE_EXPORT void
-settings_std_cb (GtkButton *button, gpointer user_data)
-{
- state *s = global_state_kludge; /* I hate C so much... */
- GtkNotebook *notebook =
- GTK_NOTEBOOK (name_to_widget (s, "opt_notebook"));
-
- /* Re-create UI to reflect the in-progress command-line settings. */
- populate_popup_window (s);
-
- gtk_notebook_set_page (notebook, 0);
-}
-
-/* The "Reset to Defaults" button on the settings dialog. */
-G_MODULE_EXPORT void
-settings_reset_cb (GtkButton *button, gpointer user_data)
-{
- state *s = global_state_kludge; /* I hate C so much... */
- GtkWidget *cmd = GTK_WIDGET (name_to_widget (s, "cmd_text"));
- char *cmd_line = get_configurator_command_line (s->cdata, True);
- gtk_entry_set_text (GTK_ENTRY (cmd), cmd_line);
- gtk_entry_set_position (GTK_ENTRY (cmd), strlen (cmd_line));
- free (cmd_line);
- populate_popup_window (s);
-}
-
-/* Called when "Advanced/Standard" buttons change the displayed page. */
-G_MODULE_EXPORT void
-settings_switch_page_cb (GtkNotebook *notebook, GtkNotebookPage *page,
- gint page_num, gpointer user_data)
-{
- state *s = global_state_kludge; /* I hate C so much... */
- GtkWidget *adv = name_to_widget (s, "adv_button");
- GtkWidget *std = name_to_widget (s, "std_button");
-
- if (page_num == 0)
- {
- gtk_widget_show (adv);
- gtk_widget_hide (std);
- }
- else if (page_num == 1)
- {
- gtk_widget_hide (adv);
- gtk_widget_show (std);
- }
- else
- abort();
-}
-
-
-/* The "Cancel" button on the Settings dialog. */
-G_MODULE_EXPORT void
-settings_cancel_cb (GtkButton *button, gpointer user_data)
-{
- state *s = global_state_kludge; /* I hate C so much... */
- gtk_widget_hide (s->popup_widget);
-}
-
-/* The "Ok" button on the Settings dialog. */
-G_MODULE_EXPORT void
-settings_ok_cb (GtkButton *button, gpointer user_data)
-{
- state *s = global_state_kludge; /* I hate C so much... */
- GtkNotebook *notebook = GTK_NOTEBOOK (name_to_widget (s, "opt_notebook"));
- int page = gtk_notebook_get_current_page (notebook);
-
- if (page == 0)
- /* Regenerate the command-line from the widget contents before saving.
- But don't do this if we're looking at the command-line page already,
- or we will blow away what they typed... */
- settings_sync_cmd_text (s);
-
- flush_popup_changes_and_save (s);
- gtk_widget_hide (s->popup_widget);
-}
-
-/* The "Close" (X) button on the Settings dialog. */
-static gboolean
-wm_popup_close_cb (GtkWidget *widget, GdkEvent *event, gpointer data)
-{
- state *s = (state *) data;
- settings_cancel_cb (0, (gpointer) s);
- return TRUE;
+ gtk_widget_show (GTK_WIDGET (s->dialog));
}
/* Returns the number of the last hack run by the server.
*/
static int
-server_current_hack (void)
+server_current_hack (state *s)
{
Atom type;
int format;
unsigned long nitems, bytesafter;
unsigned char *dataP = 0;
- Display *dpy = GDK_DISPLAY();
+ Display *dpy = s->dpy;
int hack_number = -1;
+ if (!dpy) return hack_number;
if (XGetWindowProperty (dpy, RootWindow (dpy, 0), /* always screen #0 */
XA_SCREENSAVER_STATUS,
- 0, 3, False, XA_INTEGER,
+ 0, 3, FALSE, XA_INTEGER,
&type, &format, &nitems, &bytesafter,
&dataP)
== Success
static void
scroll_to_current_hack (state *s)
{
+ XScreenSaverWindow *win = XSCREENSAVER_WINDOW (s->window);
saver_preferences *p = &s->prefs;
int hack_number = -1;
if (p->mode == ONE_HACK) /* in "one" mode, use the one */
hack_number = p->selected_hack;
if (hack_number < 0) /* otherwise, use the last-run */
- hack_number = server_current_hack ();
+ hack_number = server_current_hack (s);
if (hack_number < 0) /* failing that, last "one mode" */
hack_number = p->selected_hack;
if (hack_number < 0) /* failing that, newest hack. */
if (hack_number >= 0 && hack_number < p->screenhacks_count)
{
int list_elt = s->hack_number_to_list_elt[hack_number];
- GtkWidget *list = name_to_widget (s, "list");
- force_list_select_item (s, list, list_elt, True);
+ GtkWidget *list = win->list;
+ force_list_select_item (s, list, list_elt, TRUE);
populate_demo_window (s, list_elt);
populate_popup_window (s);
}
static void
populate_hack_list (state *s)
{
- Display *dpy = GDK_DISPLAY();
+ Display *dpy = s->dpy;
saver_preferences *p = &s->prefs;
- GtkTreeView *list = GTK_TREE_VIEW (name_to_widget (s, "list"));
+ GtkTreeView *list = GTK_TREE_VIEW (XSCREENSAVER_WINDOW (s->window)->list);
GtkListStore *model;
GtkTreeSelection *selection;
GtkCellRenderer *ren;
(but don't actually make it be insensitive, since we still
want to be able to click on it.)
*/
- GtkStyle *style = gtk_widget_get_style (GTK_WIDGET (list));
- GdkColor *fg = &style->fg[GTK_STATE_INSENSITIVE];
- /* GdkColor *bg = &style->bg[GTK_STATE_INSENSITIVE]; */
+ GtkStyleContext *c =
+ gtk_widget_get_style_context (GTK_WIDGET (list));
+ GdkRGBA fg;
char *buf = (char *) malloc (strlen (pretty_name) + 100);
-
- sprintf (buf, "<span foreground=\"#%02X%02X%02X\""
- /* " background=\"#%02X%02X%02X\"" */
- ">%s</span>",
- fg->red >> 8, fg->green >> 8, fg->blue >> 8,
- /* bg->red >> 8, bg->green >> 8, bg->blue >> 8, */
+ gtk_style_context_get_color (c, GTK_STATE_FLAG_INSENSITIVE, &fg);
+ sprintf (buf, "<span foreground=\"#%02X%02X%02X\">%s</span>",
+ (unsigned int) (0xFF * fg.red),
+ (unsigned int) (0xFF * fg.green),
+ (unsigned int) (0xFF * fg.blue),
pretty_name);
free (pretty_name);
pretty_name = buf;
}
}
+
static void
update_list_sensitivity (state *s)
{
+ XScreenSaverWindow *win = XSCREENSAVER_WINDOW (s->window);
saver_preferences *p = &s->prefs;
Bool sensitive = (p->mode == RANDOM_HACKS ||
p->mode == RANDOM_HACKS_SAME ||
p->mode == RANDOM_HACKS_SAME);
Bool blankable = (p->mode != DONT_BLANK);
- GtkWidget *scroller = name_to_widget (s, "scroller");
- GtkWidget *buttons = name_to_widget (s, "next_prev_hbox");
- GtkWidget *blanker = name_to_widget (s, "blanking_table");
- GtkTreeView *list = GTK_TREE_VIEW (name_to_widget (s, "list"));
+ GtkTreeView *list = GTK_TREE_VIEW (win->list);
GtkTreeViewColumn *use = gtk_tree_view_get_column (list, COL_ENABLED);
- gtk_widget_set_sensitive (GTK_WIDGET (scroller), sensitive);
- gtk_widget_set_sensitive (GTK_WIDGET (buttons), sensitive);
- gtk_widget_set_sensitive (GTK_WIDGET (blanker), blankable);
+ gtk_widget_set_sensitive (GTK_WIDGET (win->scroller), sensitive);
+ gtk_widget_set_sensitive (GTK_WIDGET (win->next_prev_hbox), sensitive);
+ gtk_widget_set_sensitive (GTK_WIDGET (win->blanking_table), blankable);
gtk_tree_view_column_set_visible (use, checkable);
}
static void
populate_prefs_page (state *s)
{
- Display *dpy = GDK_DISPLAY();
+ XScreenSaverWindow *win = XSCREENSAVER_WINDOW (s->window);
+ Display *dpy = s->dpy;
saver_preferences *p = &s->prefs;
- Bool can_lock_p = True;
+ Bool can_lock_p = TRUE;
- /* Disable all the "lock" controls if locking support was not provided
- at compile-time, or if running on MacOS. */
-# if defined(NO_LOCKING) || defined(__APPLE__)
- can_lock_p = False;
+# ifdef NO_LOCKING
+ can_lock_p = FALSE;
# endif
-
/* If there is only one screen, the mode menu contains
"random" but not "random-same".
*/
# undef THROTTLE
# define FMT_MINUTES(NAME,N) \
- gtk_spin_button_set_value (GTK_SPIN_BUTTON (name_to_widget (s, (NAME))), (double)((N) + 59) / (60 * 1000))
-
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON (win->NAME), \
+ (double) ((N) + 59) / (60 * 1000))
# define FMT_SECONDS(NAME,N) \
- gtk_spin_button_set_value (GTK_SPIN_BUTTON (name_to_widget (s, (NAME))), (double)((N) / 1000))
-
- FMT_MINUTES ("timeout_spinbutton", p->timeout);
- FMT_MINUTES ("cycle_spinbutton", p->cycle);
- FMT_MINUTES ("lock_spinbutton", p->lock_timeout);
- FMT_MINUTES ("dpms_standby_spinbutton", p->dpms_standby);
- FMT_MINUTES ("dpms_suspend_spinbutton", p->dpms_suspend);
- FMT_MINUTES ("dpms_off_spinbutton", p->dpms_off);
- FMT_SECONDS ("fade_spinbutton", p->fade_seconds);
-
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON (win->NAME), \
+ (double) ((N) / 1000))
+
+ FMT_MINUTES (timeout_spinbutton, p->timeout);
+ FMT_MINUTES (cycle_spinbutton, p->cycle);
+ FMT_MINUTES (lock_spinbutton, p->lock_timeout);
+ FMT_MINUTES (dpms_standby_spinbutton, p->dpms_standby);
+ FMT_MINUTES (dpms_suspend_spinbutton, p->dpms_suspend);
+ FMT_MINUTES (dpms_off_spinbutton, p->dpms_off);
+ FMT_SECONDS (fade_spinbutton, p->fade_seconds);
# undef FMT_MINUTES
# undef FMT_SECONDS
# define TOGGLE_ACTIVE(NAME,ACTIVEP) \
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (name_to_widget (s,(NAME))),\
- (ACTIVEP))
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (win->NAME), (ACTIVEP))
- TOGGLE_ACTIVE ("lock_button", p->lock_p);
-#if 0
- TOGGLE_ACTIVE ("verbose_button", p->verbose_p);
- TOGGLE_ACTIVE ("splash_button", p->splash_p);
-#endif
- TOGGLE_ACTIVE ("dpms_button", p->dpms_enabled_p);
- TOGGLE_ACTIVE ("dpms_quickoff_button", p->dpms_quickoff_p);
- TOGGLE_ACTIVE ("grab_desk_button", p->grab_desktop_p);
- TOGGLE_ACTIVE ("grab_video_button", p->grab_video_p);
- TOGGLE_ACTIVE ("grab_image_button", p->random_image_p);
- TOGGLE_ACTIVE ("fade_button", p->fade_p);
- TOGGLE_ACTIVE ("unfade_button", p->unfade_p);
+ TOGGLE_ACTIVE (lock_button, p->lock_p);
+ TOGGLE_ACTIVE (dpms_button, p->dpms_enabled_p);
+ TOGGLE_ACTIVE (dpms_quickoff_button, p->dpms_quickoff_p);
+ TOGGLE_ACTIVE (grab_desk_button, p->grab_desktop_p);
+ TOGGLE_ACTIVE (grab_video_button, p->grab_video_p);
+ TOGGLE_ACTIVE (grab_image_button, p->random_image_p);
+ TOGGLE_ACTIVE (fade_button, p->fade_p);
+ TOGGLE_ACTIVE (unfade_button, p->unfade_p);
switch (p->tmode)
{
- case TEXT_LITERAL: TOGGLE_ACTIVE ("text_radio", True); break;
- case TEXT_FILE: TOGGLE_ACTIVE ("text_file_radio", True); break;
- case TEXT_PROGRAM: TOGGLE_ACTIVE ("text_program_radio", True); break;
- case TEXT_URL: TOGGLE_ACTIVE ("text_url_radio", True); break;
- default: TOGGLE_ACTIVE ("text_host_radio", True); break;
+ case TEXT_LITERAL: TOGGLE_ACTIVE (text_radio, TRUE); break;
+ case TEXT_FILE: TOGGLE_ACTIVE (text_file_radio, TRUE); break;
+ case TEXT_PROGRAM: TOGGLE_ACTIVE (text_program_radio, TRUE); break;
+ case TEXT_URL: TOGGLE_ACTIVE (text_url_radio, TRUE); break;
+ default: TOGGLE_ACTIVE (text_host_radio, TRUE); break;
}
# undef TOGGLE_ACTIVE
- gtk_entry_set_text (GTK_ENTRY (name_to_widget (s, "image_text")),
+ gtk_entry_set_text (GTK_ENTRY (win->image_text),
(p->image_directory ? p->image_directory : ""));
- gtk_widget_set_sensitive (name_to_widget (s, "image_text"),
- p->random_image_p);
- gtk_widget_set_sensitive (name_to_widget (s, "image_browse_button"),
+ gtk_widget_set_sensitive (win->image_text, p->random_image_p);
+ gtk_widget_set_sensitive (win->image_browse_button,
p->random_image_p);
- gtk_entry_set_text (GTK_ENTRY (name_to_widget (s, "text_entry")),
+ gtk_entry_set_text (GTK_ENTRY (win->text_entry),
(p->text_literal ? p->text_literal : ""));
- gtk_entry_set_text (GTK_ENTRY (name_to_widget (s, "text_file_entry")),
+ gtk_entry_set_text (GTK_ENTRY (win->text_file_entry),
(p->text_file ? p->text_file : ""));
- gtk_entry_set_text (GTK_ENTRY (name_to_widget (s, "text_program_entry")),
+ gtk_entry_set_text (GTK_ENTRY (win->text_program_entry),
(p->text_program ? p->text_program : ""));
- gtk_entry_set_text (GTK_ENTRY (name_to_widget (s, "text_url_entry")),
+ gtk_entry_set_text (GTK_ENTRY (win->text_url_entry),
(p->text_url ? p->text_url : ""));
- gtk_widget_set_sensitive (name_to_widget (s, "text_entry"),
+ gtk_widget_set_sensitive (win->text_entry,
p->tmode == TEXT_LITERAL);
- gtk_widget_set_sensitive (name_to_widget (s, "text_file_entry"),
+ gtk_widget_set_sensitive (win->text_file_entry,
p->tmode == TEXT_FILE);
- gtk_widget_set_sensitive (name_to_widget (s, "text_file_browse"),
+ gtk_widget_set_sensitive (win->text_file_browse,
p->tmode == TEXT_FILE);
- gtk_widget_set_sensitive (name_to_widget (s, "text_program_entry"),
+ gtk_widget_set_sensitive (win->text_program_entry,
p->tmode == TEXT_PROGRAM);
- gtk_widget_set_sensitive (name_to_widget (s, "text_program_browse"),
+ gtk_widget_set_sensitive (win->text_program_browse,
p->tmode == TEXT_PROGRAM);
- gtk_widget_set_sensitive (name_to_widget (s, "text_url_entry"),
+ gtk_widget_set_sensitive (win->text_url_entry,
p->tmode == TEXT_URL);
-
/* Theme menu */
{
- GtkComboBox *cbox = GTK_COMBO_BOX (name_to_widget (s, "theme_menu"));
+ GtkComboBox *cbox = GTK_COMBO_BOX (win->theme_menu);
- /* Without this, pref_changed_cb gets called an exponentially-increasing
- number of times on the themes menu, despite the call to
- gtk_list_store_clear(). */
- static Bool done_once = False;
-
- if (cbox && !done_once)
+ if (cbox)
{
char *themes = get_string_resource (dpy, "themeNames", "ThemeNames");
- char *token = themes;
- char *name, *name2, *last;
+ char *token = themes ? themes : strdup ("default");
+ char *name, *last = 0;
GtkListStore *model;
GtkTreeIter iter;
int i = 0;
- done_once = True;
-
- g_object_get (G_OBJECT (cbox), "model", &model, NULL);
- if (!model) abort();
- gtk_list_store_clear (model);
+ /* Bad things happen if we do these things more than once. */
+ static Bool model_built_p = FALSE;
+ static Bool signal_connected_p = FALSE;
- gtk_signal_connect (GTK_OBJECT (cbox), "changed",
- GTK_SIGNAL_FUNC (pref_changed_cb), (gpointer) s);
+ if (! model_built_p)
+ {
+ g_object_get (G_OBJECT (cbox), "model", &model, NULL);
+ if (!model) abort();
+ gtk_list_store_clear (model);
+ }
while ((name = strtok_r (token, ",", &last)))
{
+ char *name2;
int L;
token = 0;
name[L-1] == '\n'))
name[--L] = 0;
- gtk_list_store_append (model, &iter);
- gtk_list_store_set (model, &iter, 0, name, -1);
+ if (! model_built_p)
+ {
+ gtk_list_store_append (model, &iter);
+ gtk_list_store_set (model, &iter, 0, name, -1);
+ }
name2 = theme_name_strip (name);
- if (!strcmp (p->dialog_theme, name2))
+ if (p->dialog_theme && name2 && !strcmp (p->dialog_theme, name2))
gtk_combo_box_set_active (cbox, i);
free (name2);
i++;
}
+
+ model_built_p = TRUE;
+
+ if (! signal_connected_p)
+ {
+ g_signal_connect (G_OBJECT (cbox), "changed",
+ G_CALLBACK (pref_changed_cb), (gpointer) s);
+ signal_connected_p = TRUE;
+ }
}
}
-
/* Map the `saver_mode' enum to mode menu to values. */
{
- GtkComboBox *opt = GTK_COMBO_BOX (name_to_widget (s, "mode_menu"));
+ GtkComboBox *opt = GTK_COMBO_BOX (win->mode_menu);
int i;
for (i = 0; i < countof(mode_menu_order); i++)
}
{
- Bool dpms_supported = False;
- Display *dpy = GDK_DISPLAY();
+ Bool dpms_supported = FALSE;
+ Display *dpy = s->dpy;
#ifdef HAVE_DPMS_EXTENSION
{
int op = 0, event = 0, error = 0;
- if (XQueryExtension (dpy, "DPMS", &op, &event, &error))
- dpms_supported = True;
+ if (dpy && XQueryExtension (dpy, "DPMS", &op, &event, &error))
+ dpms_supported = TRUE;
}
#endif /* HAVE_DPMS_EXTENSION */
# define SENSITIZE(NAME,SENSITIVEP) \
- gtk_widget_set_sensitive (name_to_widget (s, (NAME)), (SENSITIVEP))
+ gtk_widget_set_sensitive (win->NAME, (SENSITIVEP))
/* Blanking and Locking
*/
- SENSITIZE ("lock_button", can_lock_p);
- SENSITIZE ("lock_spinbutton", can_lock_p && p->lock_p);
- SENSITIZE ("lock_mlabel", can_lock_p && p->lock_p);
+ SENSITIZE (lock_button, can_lock_p);
+ SENSITIZE (lock_spinbutton, can_lock_p && p->lock_p);
+ SENSITIZE (lock_mlabel, can_lock_p && p->lock_p);
/* DPMS
*/
- SENSITIZE ("dpms_frame", dpms_supported);
- SENSITIZE ("dpms_button", dpms_supported);
-
- SENSITIZE ("dpms_standby_label", dpms_supported && p->dpms_enabled_p);
- SENSITIZE ("dpms_standby_mlabel", dpms_supported && p->dpms_enabled_p);
- SENSITIZE ("dpms_standby_spinbutton", dpms_supported && p->dpms_enabled_p);
- SENSITIZE ("dpms_suspend_label", dpms_supported && p->dpms_enabled_p);
- SENSITIZE ("dpms_suspend_mlabel", dpms_supported && p->dpms_enabled_p);
- SENSITIZE ("dpms_suspend_spinbutton", dpms_supported && p->dpms_enabled_p);
- SENSITIZE ("dpms_off_label", dpms_supported && p->dpms_enabled_p);
- SENSITIZE ("dpms_off_mlabel", dpms_supported && p->dpms_enabled_p);
- SENSITIZE ("dpms_off_spinbutton", dpms_supported && p->dpms_enabled_p);
- SENSITIZE ("dpms_quickoff_button", dpms_supported);
-
- SENSITIZE ("fade_label", (p->fade_p || p->unfade_p));
- SENSITIZE ("fade_spinbutton", (p->fade_p || p->unfade_p));
+ SENSITIZE (dpms_button, dpms_supported);
+ SENSITIZE (dpms_standby_label, dpms_supported && p->dpms_enabled_p);
+ SENSITIZE (dpms_standby_mlabel, dpms_supported && p->dpms_enabled_p);
+ SENSITIZE (dpms_standby_spinbutton, dpms_supported && p->dpms_enabled_p);
+ SENSITIZE (dpms_suspend_label, dpms_supported && p->dpms_enabled_p);
+ SENSITIZE (dpms_suspend_mlabel, dpms_supported && p->dpms_enabled_p);
+ SENSITIZE (dpms_suspend_spinbutton, dpms_supported && p->dpms_enabled_p);
+ SENSITIZE (dpms_off_label, dpms_supported && p->dpms_enabled_p);
+ SENSITIZE (dpms_off_mlabel, dpms_supported && p->dpms_enabled_p);
+ SENSITIZE (dpms_off_spinbutton, dpms_supported && p->dpms_enabled_p);
+ SENSITIZE (dpms_quickoff_button, dpms_supported);
+
+ SENSITIZE (fade_label, (p->fade_p || p->unfade_p));
+ SENSITIZE (fade_spinbutton, (p->fade_p || p->unfade_p));
# undef SENSITIZE
- }
-}
-
-/* Allow the documentation label to re-flow when the text is changed.
- http://blog.borovsak.si/2009/05/wrapping-adn-resizing-gtklabel.html
- */
-static void
-cb_allocate (GtkWidget *label, GtkAllocation *allocation, gpointer data)
-{
- gtk_widget_set_size_request (label, allocation->width - 8, -1);
+ if (!dpms_supported)
+ gtk_frame_set_label (GTK_FRAME (win->dpms_frame),
+ _("Display Power Management (not supported by this display)"));
+ }
}
}
}
+
/* Quote the text as HTML and make URLs be clickable links.
*/
static char *
}
-/* Fill in the contents of the "Settings" dialog for the current hack.
- It may or may not currently be visible.
- */
-static void
-populate_popup_window (state *s)
-{
- GtkLabel *doc = GTK_LABEL (name_to_widget (s, "doc"));
- char *doc_string = 0;
-
- g_signal_connect (G_OBJECT (doc), "size-allocate",
- G_CALLBACK (cb_allocate), NULL);
-
- if (s->cdata)
- {
- free_conf_data (s->cdata);
- s->cdata = 0;
- }
-
- {
- saver_preferences *p = &s->prefs;
- int list_elt = selected_list_element (s);
- int hack_number = (list_elt >= 0 && list_elt < s->list_count
- ? s->list_elt_to_hack_number[list_elt]
- : -1);
- screenhack *hack = (hack_number >= 0 ? p->screenhacks[hack_number] : 0);
- if (hack)
- {
- GtkWidget *parent = name_to_widget (s, "settings_vbox");
- GtkWidget *cmd = GTK_WIDGET (name_to_widget (s, "cmd_text"));
- const char *cmd_line = gtk_entry_get_text (GTK_ENTRY (cmd));
- s->cdata = load_configurator (cmd_line, s->debug_p);
- if (s->cdata && s->cdata->widget)
- gtk_box_pack_start (GTK_BOX (parent), s->cdata->widget,
- TRUE, TRUE, 0);
-
- /* Make the pretty name on the tab boxes include the year.
- */
- if (s->cdata && s->cdata->year)
- {
- Display *dpy = GDK_DISPLAY();
- GtkFrame *frame1 = GTK_FRAME (name_to_widget (s, "preview_frame"));
- GtkFrame *frame2 = GTK_FRAME (name_to_widget (s, "opt_frame"));
- GtkWidget *label1, *label2;
- GtkStyle *style;
- PangoFontDescription *font;
- char *pretty_name = (hack->name
- ? strdup (hack->name)
- : make_hack_name (dpy, hack->command));
- char *s2 = (char *) malloc (strlen (pretty_name) + 10);
- sprintf (s2, "%s (%d)", pretty_name, s->cdata->year);
- free (pretty_name);
- pretty_name = s2;
-
- gtk_frame_set_label (frame1, _(pretty_name));
- gtk_frame_set_label (frame2, _(pretty_name));
-
- /* Make the labels be bold. Must be after gtk_frame_set_label.
- You'd think you could specify this in "xscreensaver.ui"...
- */
- label1 = gtk_frame_get_label_widget (frame1);
- label2 = gtk_frame_get_label_widget (frame2);
-
- style = gtk_widget_get_style (label1);
- font = pango_font_description_copy_static (style->font_desc);
- pango_font_description_set_weight (font, PANGO_WEIGHT_BOLD);
-
- gtk_widget_modify_font (label1, font);
- gtk_widget_modify_font (label2, font);
-
- pango_font_description_free (font);
- free (pretty_name);
- }
- }
- }
-
- doc_string = (s->cdata && s->cdata->description && *s->cdata->description
- ? _(s->cdata->description)
- : 0);
- doc_string = hreffify (doc_string);
- gtk_label_set_text (doc, (doc_string
- ? doc_string
- : _("No description available.")));
- gtk_label_set_use_markup (doc, True);
-
- {
- GtkWidget *w = name_to_widget (s, "dialog_vbox");
- gtk_widget_hide (w);
- gtk_widget_unrealize (w);
- gtk_widget_realize (w);
- gtk_widget_show (w);
- }
-
- /* Also set the documentation on the main window, below the preview. */
- {
- GtkLabel *doc2 = GTK_LABEL (name_to_widget (s, "short_preview_label"));
- GtkLabel *doc3 = GTK_LABEL (name_to_widget (s, "preview_author_label"));
- char *s2 = 0;
- char *s3 = 0;
-
-# if 0
- g_signal_connect (G_OBJECT (doc2), "size-allocate",
- G_CALLBACK (cb_allocate), NULL);
- g_signal_connect (G_OBJECT (doc3), "size-allocate",
- G_CALLBACK (cb_allocate), NULL);
-# endif
-
- if (doc_string)
- {
- /* Keep only the first paragraph, and the last line.
- Omit everything in between. */
- char *second_para = strstr (doc_string, "\n\n");
- char *last_line = strrchr (doc_string, '\n');
- s2 = strdup (doc_string);
- if (second_para)
- s2[second_para - doc_string] = 0;
- if (last_line)
- s3 = strdup (last_line + 1);
- }
-
- gtk_label_set_text (doc2, (s2
- ? _(s2)
- : _("No description available.")));
- gtk_label_set_text (doc3, (s3 ? _(s3) : ""));
- if (s2) free (s2);
- if (s3) free (s3);
- }
-
- if (doc_string)
- free (doc_string);
-}
-
-
-static void
-sensitize_demo_widgets (state *s, Bool sensitive_p)
-{
- const char *names[] = { "demo", "settings",
- "cmd_label", "cmd_text", "manual",
- "visual", "visual_combo" };
- int i;
- for (i = 0; i < countof(names); i++)
- {
- GtkWidget *w = name_to_widget (s, names[i]);
- gtk_widget_set_sensitive (GTK_WIDGET(w), sensitive_p);
- }
-}
-
-
static void
sensitize_menu_items (state *s, Bool force_p)
{
- static Bool running_p = False;
+ XScreenSaverWindow *win = XSCREENSAVER_WINDOW (s->window);
+ static Bool running_p = FALSE;
static time_t last_checked = 0;
time_t now = time ((time_t *) 0);
- const char *names[] = { "activate_action", "lock_action", "kill_action",
- /* "demo" */ };
- int i;
if (force_p || now > last_checked + 10) /* check every 10 seconds */
{
last_checked = time ((time_t *) 0);
}
- for (i = 0; i < countof(names); i++)
- {
- GtkAction *a = GTK_ACTION (gtk_builder_get_object (s->gtk_ui, names[i]));
- gtk_action_set_sensitive (a, running_p);
- }
-}
-
-
-/* When the File menu is de-posted after a "Restart Daemon" command,
- the window underneath doesn't repaint for some reason. I guess this
- is a bug in exposure handling in GTK or GDK. This works around it.
- */
-static void
-force_dialog_repaint (state *s)
-{
-#if 1
- /* Tell GDK to invalidate and repaint the whole window.
- */
- GdkWindow *w = GET_WINDOW (s->toplevel_widget);
- GdkRegion *region = gdk_region_new ();
- GdkRectangle rect;
- rect.x = rect.y = 0;
- rect.width = rect.height = 32767;
- gdk_region_union_with_rect (region, &rect);
- gdk_window_invalidate_region (w, region, True);
- gdk_region_destroy (region);
- gdk_window_process_updates (w, True);
-#else
- /* Force the server to send an exposure event by creating and then
- destroying a window as a child of the top level shell.
- */
- Display *dpy = GDK_DISPLAY();
- Window parent = GDK_WINDOW_XWINDOW (s->toplevel_widget->window);
- Window w;
- XWindowAttributes xgwa;
- XGetWindowAttributes (dpy, parent, &xgwa);
- w = XCreateSimpleWindow (dpy, parent, 0, 0, xgwa.width, xgwa.height, 0,0,0);
- XMapRaised (dpy, w);
- XDestroyWindow (dpy, w);
- XSync (dpy, False);
-#endif
+ gtk_widget_set_sensitive (win->activate_menuitem, running_p);
+ gtk_widget_set_sensitive (win->lock_menuitem, running_p);
+ gtk_widget_set_sensitive (win->kill_menuitem, running_p);
}
-/* Fill in the contents of the main page.
+/* Fill in the contents of the main window, and a few things on the
+ settings dialog.
*/
static void
populate_demo_window (state *s, int list_elt)
{
- Display *dpy = GDK_DISPLAY();
+ XScreenSaverWindow *win = XSCREENSAVER_WINDOW (s->window);
+ XScreenSaverDialog *dialog = XSCREENSAVER_DIALOG (s->dialog);
+ Display *dpy = s->dpy;
saver_preferences *p = &s->prefs;
screenhack *hack;
char *pretty_name;
- GtkFrame *frame1 = GTK_FRAME (name_to_widget (s, "preview_frame"));
- GtkFrame *frame2 = GTK_FRAME (name_to_widget (s, "opt_frame"));
- GtkEntry *cmd = GTK_ENTRY (name_to_widget (s, "cmd_text"));
- GtkComboBoxEntry *vis = GTK_COMBO_BOX_ENTRY (name_to_widget (s, "visual_combo"));
- GtkWidget *list = GTK_WIDGET (name_to_widget (s, "list"));
+ GtkFrame *frame1 = GTK_FRAME (win->preview_frame);
+ GtkFrame *frame2 = dialog ? GTK_FRAME (dialog->opt_frame) : 0;
+ GtkEntry *cmd = dialog ? GTK_ENTRY (dialog->cmd_text) : 0;
+ GtkComboBox *vis = dialog ? GTK_COMBO_BOX (dialog->visual_combo) : 0;
+ GtkWidget *list = GTK_WIDGET (win->list);
/* Enforce a minimum size on the preview pane. */
- int dw = DisplayWidth (dpy, 0);
- int dh = DisplayHeight (dpy, 0);
- int minw, minh;
-# define TRY(W) do { \
- minw = (W); minh = minw * 9/16; \
- if (dw > minw * 1.5 && dh > minh * 1.5) \
- gtk_widget_set_size_request (GTK_WIDGET (frame1), minw, minh); \
- } while(0)
- TRY (300);
- TRY (400);
- TRY (480);
- TRY (640);
- TRY (800);
-/* TRY (960); */
+ if (dpy)
+ {
+ int dw = DisplayWidth (dpy, 0);
+ int dh = DisplayHeight (dpy, 0);
+ int minw, minh;
+ # define TRY(W) do { \
+ minw = (W); minh = minw * 9/16; \
+ if (dw > minw * 1.5 && dh > minh * 1.5) \
+ gtk_widget_set_size_request (GTK_WIDGET (frame1), minw, minh); \
+ } while(0)
+ TRY (300);
+ TRY (400);
+ TRY (480);
+ TRY (640);
+ TRY (800);
+ /* TRY (960); */
# undef TRY
+ }
if (p->mode == BLANK_ONLY)
{
if (!pretty_name)
pretty_name = strdup (_("Preview"));
- gtk_frame_set_label (frame1, _(pretty_name));
- gtk_frame_set_label (frame2, _(pretty_name));
+ if (dialog->unedited_cmdline) free (dialog->unedited_cmdline);
+ dialog->unedited_cmdline = strdup (hack ? hack->command : "");
- gtk_entry_set_text (cmd, (hack ? hack->command : ""));
- gtk_entry_set_position (cmd, 0);
+ gtk_frame_set_label (frame1, _(pretty_name));
+ if (frame2)
+ gtk_frame_set_label (frame2, _(pretty_name));
+ if (cmd)
+ gtk_entry_set_text (cmd, dialog->unedited_cmdline);
{
char title[255];
sprintf (title, _("%s: %.100s Settings"),
progclass, (pretty_name ? pretty_name : "???"));
- gtk_window_set_title (GTK_WINDOW (s->popup_widget), title);
+ gtk_window_set_title (GTK_WINDOW (s->window), title);
+ if (s->dialog)
+ gtk_window_set_title (GTK_WINDOW (s->dialog), title);
}
- gtk_entry_set_text (GTK_ENTRY (gtk_bin_get_child (GTK_BIN (vis))),
- (hack
- ? (hack->visual && *hack->visual
- ? hack->visual
- : _("Any"))
- : ""));
+ /* Fill in the Visual combo-box */
+ if (vis)
+ gtk_entry_set_text (GTK_ENTRY (gtk_bin_get_child (GTK_BIN (vis))),
+ (hack
+ ? (hack->visual && *hack->visual
+ ? hack->visual
+ : _("Any"))
+ : ""));
- sensitize_demo_widgets (s, (hack ? True : False));
+ sensitize_demo_widgets (s, (hack ? TRUE : FALSE));
if (pretty_name) free (pretty_name);
static void
widget_deleter (GtkWidget *widget, gpointer data)
{
- /* #### Well, I want to destroy these widgets, but if I do that, they get
- referenced again, and eventually I get a SEGV. So instead of
- destroying them, I'll just hide them, and leak a bunch of memory
- every time the disk file changes. Go go go Gtk!
-
- #### Ok, that's a lie, I get a crash even if I just hide the widget
- and don't ever delete it. Fuck!
- */
-#if 0
gtk_widget_destroy (widget);
-#else
- gtk_widget_hide (widget);
-#endif
}
static void
initialize_sort_map (state *s)
{
- Display *dpy = GDK_DISPLAY();
+ Display *dpy = s->dpy;
saver_preferences *p = &s->prefs;
int i, j;
static int
maybe_reload_init_file (state *s)
{
- Display *dpy = GDK_DISPLAY();
+ Display *dpy = s->dpy;
saver_preferences *p = &s->prefs;
+ XScreenSaverWindow *win = XSCREENSAVER_WINDOW (s->window);
int status = 0;
- static Bool reentrant_lock = False;
+ static Bool reentrant_lock = FALSE;
if (reentrant_lock) return 0;
- reentrant_lock = True;
+ reentrant_lock = TRUE;
if (init_file_changed_p (p))
{
if (!f || !*f) return 0;
b = (char *) malloc (strlen(f) + 1024);
- sprintf (b,
- _("Warning:\n\n"
- "file \"%s\" has changed, reloading.\n"),
- f);
- warning_dialog (s->toplevel_widget, b, D_NONE, 100);
+ sprintf (b, _("file \"%s\" has changed, reloading.\n"), f);
+ warning_dialog (s->window, _("Warning"), b);
free (b);
load_init_file (dpy, p);
initialize_sort_map (s);
list_elt = selected_list_element (s);
- list = name_to_widget (s, "list");
+ list = win->list;
gtk_container_foreach (GTK_CONTAINER (list), widget_deleter, NULL);
populate_hack_list (s);
- force_list_select_item (s, list, list_elt, True);
+ force_list_select_item (s, list, list_elt, TRUE);
populate_prefs_page (s);
populate_demo_window (s, list_elt);
populate_popup_window (s);
status = 1;
}
- reentrant_lock = False;
+ reentrant_lock = FALSE;
return status;
}
static Visual *get_best_gl_visual (state *);
static GdkVisual *
-x_visual_to_gdk_visual (Visual *xv)
+x_visual_to_gdk_visual (GdkWindow *win, Visual *xv)
{
- GList *gvs = gdk_list_visuals();
- if (!xv) return gdk_visual_get_system();
- for (; gvs; gvs = gvs->next)
+ if (xv)
{
- GdkVisual *gv = (GdkVisual *) gvs->data;
- if (xv == GDK_VISUAL_XVISUAL (gv))
- return gv;
+ GdkScreen *screen = gdk_window_get_screen (win);
+ GList *gvs = gdk_screen_list_visuals (screen);
+ /* This list is sometimes NULL, not even the default visual! */
+ for (; gvs; gvs = gvs->next)
+ {
+ GdkVisual *gv = (GdkVisual *) gvs->data;
+ if (xv == GDK_VISUAL_XVISUAL (gv))
+ return gv;
+ }
}
- fprintf (stderr, "%s: couldn't convert X Visual 0x%lx to a GdkVisual\n",
- blurb(), (unsigned long) xv->visualid);
- abort();
+ return 0;
}
+
static void
clear_preview_window (state *s)
{
- GtkWidget *p;
- GdkWindow *window;
- GtkStyle *style;
-
- if (!s->toplevel_widget) return; /* very early */
- p = name_to_widget (s, "preview");
- window = GET_WINDOW (p);
-
- if (!window) return;
-
- /* Flush the widget background down into the window, in case a subproc
- has changed it. */
- style = gtk_widget_get_style (p);
- gdk_window_set_background (window, &style->bg[GTK_STATE_NORMAL]);
- gdk_window_clear (window);
-
- {
- int list_elt = selected_list_element (s);
- int hack_number = (list_elt >= 0
- ? s->list_elt_to_hack_number[list_elt]
- : -1);
- Bool available_p = (hack_number >= 0
- ? s->hacks_available_p [hack_number]
- : True);
- Bool nothing_p = (s->total_available < 5);
-
- GtkWidget *notebook = name_to_widget (s, "preview_notebook");
- gtk_notebook_set_page (GTK_NOTEBOOK (notebook),
- (s->running_preview_error_p
- ? (available_p ? 1 :
- nothing_p ? 3 : 2)
- : 0));
- }
-
- gdk_flush ();
+ XScreenSaverWindow *win = XSCREENSAVER_WINDOW (s->window);
+ int list_elt = selected_list_element (s);
+ int hack_number = (list_elt >= 0
+ ? s->list_elt_to_hack_number[list_elt]
+ : -1);
+ Bool available_p = (hack_number >= 0
+ ? s->hacks_available_p [hack_number]
+ : TRUE);
+ Bool nothing_p = (s->total_available < 5);
+
+ GtkWidget *notebook = win->preview_notebook;
+ gtk_notebook_set_current_page (GTK_NOTEBOOK (notebook),
+ (!s->running_preview_error_p ? 0 : /* ok */
+ nothing_p ? 3 : /* no hacks installed */
+ !available_p ? 2 : /* hack not installed */
+ s->wayland_p ? 4 : /* fucking wayland */
+ 1)); /* preview failed */
}
it's best to just always destroy and recreate the preview window
when changing hacks, instead of always trying to reuse the same one?
*/
- GtkWidget *pr = name_to_widget (s, "preview");
- if (GET_REALIZED (pr))
+ XScreenSaverWindow *win = XSCREENSAVER_WINDOW (s->window);
+ GtkWidget *pr = win->preview;
+ if (s->dpy && !s->wayland_p && gtk_widget_get_realized (pr))
{
- GdkWindow *window = GET_WINDOW (pr);
- Window oid = (window ? GDK_WINDOW_XWINDOW (window) : 0);
+ GdkWindow *window = gtk_widget_get_window (pr);
+ Window oid = (window ? gdk_x11_window_get_xid (window) : 0);
Window id;
gtk_widget_hide (pr);
gtk_widget_unrealize (pr);
+ gtk_widget_set_has_window (pr, TRUE);
gtk_widget_realize (pr);
gtk_widget_show (pr);
- id = (window ? GDK_WINDOW_XWINDOW (window) : 0);
+ id = (window ? gdk_x11_window_get_xid (window) : 0);
if (s->debug_p)
fprintf (stderr, "%s: window id 0x%X -> 0x%X\n", blurb(),
(unsigned int) oid,
}
+/* Make the preview widget use the best GL visual.
+ We just always use that one rather than switching.
+ */
static void
fix_preview_visual (state *s)
{
- GtkWidget *widget = name_to_widget (s, "preview");
+ XScreenSaverWindow *win = XSCREENSAVER_WINDOW (s->window);
Visual *xvisual = get_best_gl_visual (s);
- GdkVisual *visual = x_visual_to_gdk_visual (xvisual);
- GdkVisual *dvisual = gdk_visual_get_system();
- GdkColormap *cmap = (visual == dvisual
- ? gdk_colormap_get_system ()
- : gdk_colormap_new (visual, False));
+ GtkWidget *widget = win->preview;
+ GdkWindow *gwindow = gtk_widget_get_window (GTK_WIDGET (win));
+ GdkScreen *gscreen = gdk_window_get_screen (gwindow);
+ GdkVisual *gvisual1 = gdk_screen_get_system_visual (gscreen);
+ GdkVisual *gvisual2 = x_visual_to_gdk_visual (gwindow, xvisual);
+
+ if (! gvisual2)
+ {
+ gvisual2 = gvisual1;
+ if (s->debug_p)
+ fprintf (stderr, "%s: couldn't convert X Visual 0x%lx to a GdkVisual;"
+ " winging it.\n",
+ blurb(), (unsigned long) xvisual->visualid);
+ }
if (s->debug_p)
fprintf (stderr, "%s: using %s visual 0x%lx\n", blurb(),
- (visual == dvisual ? "default" : "non-default"),
+ (gvisual1 == gvisual2 ? "default" : "non-default"),
(xvisual ? (unsigned long) xvisual->visualid : 0L));
- if (!GET_REALIZED (widget) ||
- gtk_widget_get_visual (widget) != visual)
+ if (!gtk_widget_get_realized (widget) ||
+ gtk_widget_get_visual (widget) != gvisual2)
{
gtk_widget_unrealize (widget);
- gtk_widget_set_visual (widget, visual);
- gtk_widget_set_colormap (widget, cmap);
+ gtk_widget_set_has_window (widget, TRUE);
+ gtk_widget_set_visual (widget, gvisual2);
gtk_widget_realize (widget);
}
- /* Set the Widget colors to be white-on-black. */
- {
- GdkWindow *window = GET_WINDOW (widget);
- GtkStyle *style = gtk_style_copy (gtk_widget_get_style (widget));
- GdkColormap *cmap = gtk_widget_get_colormap (widget);
- GdkColor *fg = &style->fg[GTK_STATE_NORMAL];
- GdkColor *bg = &style->bg[GTK_STATE_NORMAL];
- GdkGC *fgc = gdk_gc_new(window);
- GdkGC *bgc = gdk_gc_new(window);
- if (!gdk_color_white (cmap, fg)) abort();
- if (!gdk_color_black (cmap, bg)) abort();
- gdk_gc_set_foreground (fgc, fg);
- gdk_gc_set_background (fgc, bg);
- gdk_gc_set_foreground (bgc, bg);
- gdk_gc_set_background (bgc, fg);
- style->fg_gc[GTK_STATE_NORMAL] = fgc;
- style->bg_gc[GTK_STATE_NORMAL] = fgc;
- gtk_widget_set_style (widget, style);
-
- /* For debugging purposes, put a title on the window (so that
- it can be easily found in the output of "xwininfo -tree".)
- */
- gdk_window_set_title (window, "Preview");
- }
-
gtk_widget_show (widget);
}
+
/* Subprocesses
*/
static Visual *
get_best_gl_visual (state *s)
{
- Display *dpy = GDK_DISPLAY();
+ Display *dpy = s->dpy;
pid_t forked;
int fds [2];
int in, out;
abort();
}
-
static void
kill_preview_subproc (state *s, Bool reset_p)
{
- s->running_preview_error_p = False;
+ s->running_preview_error_p = FALSE;
reap_zombies (s);
clear_preview_window (s);
if (s->subproc_check_timer_id)
{
- gtk_timeout_remove (s->subproc_check_timer_id);
+ g_source_remove (s->subproc_check_timer_id);
s->subproc_check_timer_id = 0;
s->subproc_check_countdown = 0;
}
static void
launch_preview_subproc (state *s)
{
+ XScreenSaverWindow *win = XSCREENSAVER_WINDOW (s->window);
saver_preferences *p = &s->prefs;
Window id;
char *new_cmd = 0;
pid_t forked;
const char *cmd = s->desired_preview_cmd;
- GtkWidget *pr = name_to_widget (s, "preview");
+ GtkWidget *pr = win->preview;
GdkWindow *window;
reset_preview_window (s);
- window = GET_WINDOW (pr);
+ window = gtk_widget_get_window (pr);
- s->running_preview_error_p = False;
+ s->running_preview_error_p = FALSE;
if (s->preview_suppressed_p)
{
- kill_preview_subproc (s, False);
+ kill_preview_subproc (s, FALSE);
goto DONE;
}
new_cmd = malloc (strlen (cmd) + 40);
- id = (window ? GDK_WINDOW_XWINDOW (window) : 0);
+ id = (window && !s->wayland_p
+ ? gdk_x11_window_get_xid (window)
+ : 0);
if (id == 0)
{
/* No window id? No command to run. */
else
{
/* We do this instead of relying on $XSCREENSAVER_WINDOW specifically
- so that third-party savers that don't implement -window-id will fail:
+ so that third-party savers that don't implement --window-id will fail:
otherwise we might have full-screen windows popping up when we were
just trying to get a preview thumbnail.
*/
strcpy (new_cmd, cmd);
- sprintf (new_cmd + strlen (new_cmd), " -window-id 0x%X",
+ sprintf (new_cmd + strlen (new_cmd), " --window-id 0x%X",
(unsigned int) id);
}
- kill_preview_subproc (s, False);
+ kill_preview_subproc (s, FALSE);
if (! new_cmd)
{
- s->running_preview_error_p = True;
+ s->running_preview_error_p = TRUE;
clear_preview_window (s);
goto DONE;
}
char buf[255];
sprintf (buf, "%s: couldn't fork", blurb());
perror (buf);
- s->running_preview_error_p = True;
+ s->running_preview_error_p = TRUE;
goto DONE;
break;
}
case 0:
{
- close (ConnectionNumber (GDK_DISPLAY()));
+ close (ConnectionNumber (s->dpy));
hack_subproc_environment (id, s->debug_p);
"";
# endif
- Display *dpy = GDK_DISPLAY();
- const char *odpy = DisplayString (dpy);
+ Display *dpy = s->dpy;
+ const char *odpy = dpy ? DisplayString (dpy) : ":0.0";
char *ndpy = (char *) malloc(strlen(odpy) + 20);
strcpy (ndpy, "DISPLAY=");
strcat (ndpy, odpy);
{
/* Store a window ID in $XSCREENSAVER_WINDOW -- this isn't strictly
necessary yet, but it will make programs work if we had invoked
- them with "-root" and not with "-window-id" -- which, of course,
+ them with "--root" and not with "--window-id" -- which, of course,
doesn't happen.
*/
char *nssw = (char *) malloc (40);
}
+
/* Called from a timer:
Launches the currently-chosen subprocess, if it's not already running.
If there's a different process running, kills it.
{
state *s = (state *) data;
if (! s->desired_preview_cmd)
- kill_preview_subproc (s, True);
+ kill_preview_subproc (s, TRUE);
else if (!s->running_preview_cmd ||
!!strcmp (s->desired_preview_cmd, s->running_preview_cmd))
launch_preview_subproc (s);
return FALSE; /* do not re-execute timer */
}
-static int
-settings_timer (gpointer data)
-{
- settings_cb (0, 0);
- return FALSE; /* Only run timer once */
-}
-
/* Call this when you think you might want a preview process running.
It will set a timer that will actually launch that program a second
s->desired_preview_cmd = (cmd ? strdup (cmd) : 0);
if (s->subproc_timer_id)
- gtk_timeout_remove (s->subproc_timer_id);
- s->subproc_timer_id = gtk_timeout_add (delay, update_subproc_timer, s);
+ g_source_remove (s->subproc_timer_id);
+ s->subproc_timer_id = g_timeout_add (delay, update_subproc_timer, s);
}
check_subproc_timer (gpointer data)
{
state *s = (state *) data;
- Bool again_p = True;
+ Bool again_p = TRUE;
if (s->running_preview_error_p || /* already dead */
s->running_preview_pid <= 0)
{
- again_p = False;
+ again_p = FALSE;
}
else
{
reap_zombies (s);
status = kill (s->running_preview_pid, 0);
if (status < 0 && errno == ESRCH)
- s->running_preview_error_p = True;
+ s->running_preview_error_p = TRUE;
if (s->debug_p)
{
if (s->running_preview_error_p)
{
clear_preview_window (s);
- again_p = False;
+ again_p = FALSE;
}
}
might be satisfied. */
if (--s->subproc_check_countdown <= 0)
- again_p = False;
+ again_p = FALSE;
if (again_p)
return TRUE; /* re-execute timer */
check whether the program is still running. The assumption here
is that if the process didn't stay up for more than a couple of
seconds, then either the program doesn't exist, or it doesn't
- take a -window-id argument.
+ take a --window-id argument.
*/
static void
schedule_preview_check (state *s)
fprintf (stderr, "%s: scheduling check\n", blurb());
if (s->subproc_check_timer_id)
- gtk_timeout_remove (s->subproc_check_timer_id);
+ g_source_remove (s->subproc_check_timer_id);
s->subproc_check_timer_id =
- gtk_timeout_add (1000 / ticks,
- check_subproc_timer, (gpointer) s);
+ g_timeout_add (1000 / ticks,
+ check_subproc_timer, (gpointer) s);
s->subproc_check_countdown = ticks * seconds;
}
static Bool
-screen_blanked_p (void)
+screen_blanked_p (state *s)
{
Atom type;
int format;
unsigned long nitems, bytesafter;
unsigned char *dataP = 0;
- Display *dpy = GDK_DISPLAY();
- Bool blanked_p = False;
+ Display *dpy = s->dpy;
+ Bool blanked_p = FALSE;
+ if (!s->dpy) return FALSE;
if (XGetWindowProperty (dpy, RootWindow (dpy, 0), /* always screen #0 */
XA_SCREENSAVER_STATUS,
- 0, 3, False, XA_INTEGER,
+ 0, 3, FALSE, XA_INTEGER,
&type, &format, &nitems, &bytesafter,
&dataP)
== Success
check_blanked_timer (gpointer data)
{
state *s = (state *) data;
- Bool blanked_p = screen_blanked_p ();
+ Bool blanked_p = screen_blanked_p (s);
if (blanked_p && s->running_preview_pid)
{
if (s->debug_p)
fprintf (stderr, "%s: screen is blanked: killing preview\n", blurb());
- kill_preview_subproc (s, True);
+ kill_preview_subproc (s, TRUE);
}
- return True; /* re-execute timer */
+ return TRUE; /* re-execute timer */
}
static Bool
multi_screen_p (Display *dpy)
{
- monitor **monitors = scan_monitors (dpy);
+ monitor **monitors = dpy ? scan_monitors (dpy) : NULL;
Bool ret = monitors && monitors[0] && monitors[1];
if (monitors) free_monitors (monitors);
return ret;
}
-/* Setting window manager icon
- */
-
-static void
-init_icon (GdkWindow *window)
-{
- GdkBitmap *mask = 0;
- GdkPixmap *pixmap =
- gdk_pixmap_create_from_xpm_d (window, &mask, 0,
- (gchar **) logo_50_xpm);
- if (pixmap)
- gdk_window_set_icon (window, 0, pixmap, mask);
-}
-
-
-/* The main demo-mode command loop.
- */
-
#if 0
static Bool
-mapper (XrmDatabase *db, XrmBindingList bindings, XrmQuarkList quarks,
- XrmRepresentation *type, XrmValue *value, XPointer closure)
+xrm_mapper (XrmDatabase *db, XrmBindingList bindings, XrmQuarkList quarks,
+ XrmRepresentation *type, XrmValue *value, XPointer closure)
{
int i;
for (i = 0; quarks[i]; i++)
fprintf (stderr, ": %s\n", (char *) value->addr);
- return False;
+ return FALSE;
+}
+#endif /* 0 */
+
+
+static int
+ignore_all_errors_ehandler (Display *dpy, XErrorEvent *error)
+{
+ return 0;
}
-#endif
static Window
gnome_screensaver_window (Display *dpy, char **name_ret)
{
- int nscreens = ScreenCount (dpy);
+ int nscreens;
int i, screen;
Window gnome_window = 0;
+ XErrorHandler old_handler;
+
+ if (!dpy) return 0;
+ XSync (dpy, FALSE);
+ old_handler = XSetErrorHandler (ignore_all_errors_ehandler);
+
+ nscreens = ScreenCount (dpy);
for (screen = 0; screen < nscreens; screen++)
{
Window root = RootWindow (dpy, screen);
unsigned long nitems, bytesafter;
unsigned char *name;
if (XGetWindowProperty (dpy, kids[i], XA_WM_COMMAND, 0, 128,
- False, XA_STRING, &type, &format, &nitems,
+ FALSE, XA_STRING, &type, &format, &nitems,
&bytesafter, &name)
== Success
&& type != None
if (gnome_window)
break;
}
+
+ XSync (dpy, FALSE);
+ XSetErrorHandler (old_handler);
return gnome_window;
}
+
static Bool
-gnome_screensaver_active_p (char **name_ret)
+gnome_screensaver_active_p (state *s, char **name_ret)
{
- Display *dpy = GDK_DISPLAY();
- Window w = gnome_screensaver_window (dpy, name_ret);
- return (w ? True : False);
+ Window w = gnome_screensaver_window (s->dpy, name_ret);
+ return (w ? TRUE : FALSE);
}
+
static void
-kill_gnome_screensaver (void)
+kill_gnome_screensaver (state *s)
{
- Display *dpy = GDK_DISPLAY();
- Window w = gnome_screensaver_window (dpy, NULL);
- if (w) XKillClient (dpy, (XID) w);
+ Window w = gnome_screensaver_window (s->dpy, NULL);
+ if (w) XKillClient (s->dpy, (XID) w);
}
+
static Bool
kde_screensaver_active_p (void)
{
FILE *p = popen ("dcop kdesktop KScreensaverIface isEnabled 2>/dev/null",
"r");
char buf[255];
- if (!p) return False;
- if (!fgets (buf, sizeof(buf)-1, p)) return False;
+ if (!p) return FALSE;
+ if (!fgets (buf, sizeof(buf)-1, p)) return FALSE;
pclose (p);
if (!strcmp (buf, "true\n"))
- return True;
+ return TRUE;
else
- return False;
+ return FALSE;
}
static void
-kill_kde_screensaver (void)
+kill_kde_screensaver (state *s)
{
/* Use empty body to kill warning from gcc -Wall with
"warning: ignoring return value of 'system',
the_network_is_not_the_computer (gpointer data)
{
state *s = (state *) data;
- Display *dpy = GDK_DISPLAY();
+ Display *dpy = s->dpy;
char *rversion = 0, *ruser = 0, *rhost = 0;
char *luser, *lhost;
char *msg = 0;
char *oname = 0;
struct passwd *p = getpwuid (getuid ());
- const char *d = DisplayString (dpy);
+ const char *d = dpy ? DisplayString (dpy) : ":0.0";
# if defined(HAVE_UNAME)
struct utsname uts;
else
luser = "???";
- server_xscreensaver_version (dpy, &rversion, &ruser, &rhost);
+ if (dpy)
+ server_xscreensaver_version (dpy, &rversion, &ruser, &rhost);
/* Make a buffer that's big enough for a number of copies of all the
strings, plus some. */
1024));
*msg = 0;
- if (!rversion || !*rversion)
+ if ((!rversion || !*rversion) && !s->debug_p)
{
sprintf (msg,
- _("Warning:\n\n"
- "The XScreenSaver daemon doesn't seem to be running\n"
+ _("The XScreenSaver daemon doesn't seem to be running\n"
"on display \"%.25s\". Launch it now?"),
d);
}
/* Warn that the two processes are running as different users.
*/
sprintf(msg,
- _("Warning:\n\n"
- "%s is running as user \"%s\" on host \"%s\".\n"
- "But the xscreensaver managing display \"%s\"\n"
+ _("%s is running as user \"%s\" on host \"%s\".\n"
+ "But the xscreensaver managing display \"%.25s\"\n"
"is running as user \"%s\" on host \"%s\".\n"
"\n"
"Since they are different users, they won't be reading/writing\n"
/* Warn that the two processes are running on different hosts.
*/
sprintf (msg,
- _("Warning:\n\n"
- "%s is running as user \"%s\" on host \"%s\".\n"
+ _("%s is running as user \"%s\" on host \"%s\".\n"
"But the xscreensaver managing display \"%s\"\n"
"is running as user \"%s\" on host \"%s\".\n"
"\n"
progname,
lhost, luser);
}
- else if (!!strcmp (rversion, s->short_version))
+ else if (rversion && *rversion && !!strcmp (rversion, s->short_version))
{
/* Warn that the version numbers don't match.
*/
sprintf (msg,
- _("Warning:\n\n"
- "This is %s version %s.\n"
+ _("This is %s version %s.\n"
"But the xscreensaver managing display \"%s\"\n"
"is version %s. This could cause problems.\n"
"\n"
validate_image_directory_quick (s);
if (*msg)
- warning_dialog (s->toplevel_widget, msg, D_LAUNCH, 1);
+ warning_dialog_1 (s->window, _("Warning"), msg, D_LAUNCH);
if (rversion) free (rversion);
if (ruser) free (ruser);
running" dialog so that these are on top. Good enough.
*/
- if (gnome_screensaver_active_p (&oname))
+ if (gnome_screensaver_active_p (s, &oname))
{
char msg [1024];
sprintf (msg,
- _("Warning:\n\n"
- "The GNOME screen saver daemon (%s) appears to be running.\n"
+ _("The GNOME screen saver daemon (%s) appears to be running.\n"
"It must be stopped for XScreenSaver to work properly.\n"
"\n"
"Stop the \"%s\" daemon now?\n"),
oname, oname);
- warning_dialog (s->toplevel_widget, msg, D_GNOME, 1);
+ warning_dialog_1 (s->window, _("Warning"), msg, D_GNOME);
}
- if (kde_screensaver_active_p ())
- warning_dialog (s->toplevel_widget,
- _("Warning:\n\n"
- "The KDE screen saver daemon appears to be running.\n"
+ if (kde_screensaver_active_p())
+ warning_dialog_1 (s->window, _("Warning"),
+ _("The KDE screen saver daemon appears to be running.\n"
"It must be stopped for XScreenSaver to work properly.\n"
"\n"
"Stop the KDE screen saver daemon now?\n"),
- D_KDE, 1);
+ D_KDE);
+
+ if (s->wayland_p)
+ warning_dialog (s->window, _("Warning"),
+ _("You are running Wayland rather than the X Window System.\n"
+ "\n"
+ "Under Wayland, idle-detection fails when non-X11 programs\n"
+ "are selected, meaning the screen may blank prematurely.\n"
+ "Also, locking is impossible.\n"
+ "\n"
+ "See the XScreenSaver manual for instructions on\n"
+ "configuring your system to use X11 instead of Wayland.\n"));
- if (getenv ("WAYLAND_DISPLAY") || getenv ("WAYLAND_SOCKET"))
- warning_dialog (s->toplevel_widget,
- _("Warning:\n\n"
- "You are running Wayland rather than the X Window System.\n"
- "\n"
- "Under Wayland, idle-detection fails when non-X11 programs\n"
- "are selected, meaning the screen may blank prematurely.\n"
- "Also, locking is impossible.\n"
- "\n"
- "See the XScreenSaver manual for instructions on\n"
- "configuring your system to use X11 instead of Wayland.\n"),
- D_NONE, 1);
-
- return False; /* Only run timer once */
+ return FALSE; /* Only run timer once */
}
of the program that generated them.
*/
static int
-demo_ehandler (Display *dpy, XErrorEvent *error)
+x_error (Display *dpy, XErrorEvent *error)
{
- state *s = global_state_kludge; /* I hate C so much... */
- fprintf (stderr, "\nX error in %s:\n", blurb());
+ fprintf (stderr, "\n%s: X error:\n", blurb());
XmuPrintDefaultErrorMessage (dpy, error, stderr);
- kill_preview_subproc (s, False);
- exit (-1);
+ /* No way to get 'state' in here... */
+ /* kill_preview_subproc (s, FALSE); */
+ exit (-1); /* Likewise, no way to call g_application_quit(). */
return 0;
}
-/* We use this error handler so that Gtk/Gdk errors are preceeded by the name
- of the program that generated them; and also that we can ignore one
- particular bogus error message that Gdk madly spews.
- */
static void
-g_log_handler (const gchar *log_domain, GLogLevelFlags log_level,
- const gchar *message, gpointer user_data)
-{
- /* Ignore the message "Got event for unknown window: 0x...".
- Apparently some events are coming in for the xscreensaver window
- (presumably reply events related to the ClientMessage) and Gdk
- feels the need to complain about them. So, just suppress any
- messages that look like that one.
- */
- if (strstr (message, "unknown window"))
- return;
-
- fprintf (stderr, "%s: %s-%s: %s%s", blurb(),
- (log_domain ? log_domain : progclass),
- (log_level == G_LOG_LEVEL_ERROR ? "error" :
- log_level == G_LOG_LEVEL_CRITICAL ? "critical" :
- log_level == G_LOG_LEVEL_WARNING ? "warning" :
- log_level == G_LOG_LEVEL_MESSAGE ? "message" :
- log_level == G_LOG_LEVEL_INFO ? "info" :
- log_level == G_LOG_LEVEL_DEBUG ? "debug" : "???"),
- message,
- ((!*message || message[strlen(message)-1] != '\n')
- ? "\n" : ""));
+g_logger (const gchar *domain, GLogLevelFlags log_level,
+ const gchar *message, gpointer data)
+{
+ if (log_level & G_LOG_LEVEL_DEBUG) return;
+ if (log_level & G_LOG_LEVEL_INFO) return;
+ fprintf (stderr, "%s: %s: %s\n", blurb(), domain, message);
+ if (log_level & G_LOG_LEVEL_CRITICAL) exit (-1);
}
+/* Why are there two of these hooks and why does this one suck so hard?? */
+static GLogWriterOutput
+g_other_logger (GLogLevelFlags log_level, const GLogField *fields,
+ gsize n_fields, gpointer data)
+{
+ int i;
+ GLogWriterOutput ret = G_LOG_WRITER_UNHANDLED;
+ if (log_level & G_LOG_LEVEL_DEBUG) return ret;
+ if (log_level & G_LOG_LEVEL_INFO) return ret;
+ for (i = 0; i < n_fields; i++)
+ {
+ const GLogField *field = &fields[i];
+ if (strcmp (field->key, "MESSAGE")) continue;
+ fprintf (stderr, "%s: %s\n", blurb(), (char *) field->value);
+ ret = G_LOG_WRITER_HANDLED;
+ }
+ if (log_level & G_LOG_LEVEL_CRITICAL) exit (-1);
+ return ret;
+}
-STFU
-static char *defaults[] = {
-#include "XScreenSaver_ad.h"
- 0
-};
-const char *usage = "[--display dpy] [--prefs | --settings]"
- "\n\t\t [--debug] [--sync] [--no-xshm] [--configdir dir]";
+/****************************************************************************
+ XScreenSaverDialog callbacks, referenced by prefs.ui.
+ ****************************************************************************/
-#if 0
-static void
-print_widget_tree (GtkWidget *w, int depth)
+/* The "Documentation" button on the Settings dialog */
+G_MODULE_EXPORT void
+manual_cb (GtkButton *button, gpointer user_data)
{
- int i;
- for (i = 0; i < depth; i++)
- fprintf (stderr, " ");
- fprintf (stderr, "%s\n", gtk_widget_get_name (w));
+ XScreenSaverDialog *dialog = XSCREENSAVER_DIALOG (user_data);
+ XScreenSaverWindow *win = dialog->main;
+ state *s = &win->state;
+ Display *dpy = s->dpy;
+ saver_preferences *p = &s->prefs;
+ GtkWidget *list_widget = win->list;
+ int list_elt = selected_list_element (s);
+ int hack_number;
+ char *name, *name2, *cmd, *str;
+ char *oname = 0;
+ if (s->debug_p) fprintf (stderr, "%s: documentation button\n", blurb());
+ if (list_elt < 0) return;
+ hack_number = s->list_elt_to_hack_number[list_elt];
+
+ flush_dialog_changes_and_save (s);
+ ensure_selected_item_visible (list_widget);
+
+ name = strdup (p->screenhacks[hack_number]->command);
+ name2 = name;
+ oname = name;
+ while (isspace (*name2)) name2++;
+ str = name2;
+ while (*str && !isspace (*str)) str++;
+ *str = 0;
+ str = strrchr (name2, '/');
+ if (str) name2 = str+1;
- if (GTK_IS_LIST (w))
+ cmd = get_string_resource (dpy, "manualCommand", "ManualCommand");
+ if (cmd)
{
- for (i = 0; i < depth+1; i++)
- fprintf (stderr, " ");
- fprintf (stderr, "...list kids...\n");
+ char *cmd2 = (char *) malloc (strlen (cmd) + (strlen (name2) * 4) + 100);
+ strcpy (cmd2, "( ");
+ sprintf (cmd2 + strlen (cmd2),
+ cmd,
+ name2, name2, name2, name2);
+ strcat (cmd2, " ) &");
+ if (system (cmd2) < 0)
+ fprintf (stderr, "%s: fork error\n", blurb());
+ free (cmd2);
}
- else if (GTK_IS_CONTAINER (w))
+ else
{
- GList *kids = gtk_container_children (GTK_CONTAINER (w));
- while (kids)
- {
- print_widget_tree (GTK_WIDGET (kids->data), depth+1);
- kids = kids->next;
- }
+ warning_dialog (s->window, _("Error"),
+ _("no `manualCommand' resource set."));
}
-}
-#endif /* 0 */
-static int
-delayed_scroll_kludge (gpointer data)
-{
- state *s = (state *) data;
- GtkWidget *w = GTK_WIDGET (name_to_widget (s, "list"));
- ensure_selected_item_visible (w);
+ free (oname);
+}
- /* Oh, this is just fucking lovely, too. */
- w = GTK_WIDGET (name_to_widget (s, "preview"));
- gtk_widget_hide (w);
- gtk_widget_show (w);
- return FALSE; /* do not re-execute timer */
+static void
+settings_sync_cmd_text (state *s)
+{
+ XScreenSaverDialog *dialog = XSCREENSAVER_DIALOG (s->dialog);
+ GtkWidget *cmd = GTK_WIDGET (dialog->cmd_text);
+ char *cmd_line;
+ if (! s->cdata) return;
+ cmd_line = get_configurator_command_line (s->cdata, FALSE);
+ gtk_entry_set_text (GTK_ENTRY (cmd), cmd_line);
+ free (cmd_line);
}
-static GtkWidget *
-create_xscreensaver_demo (void)
+/* The "Advanced" button on the settings dialog. */
+G_MODULE_EXPORT void
+settings_adv_cb (GtkButton *button, gpointer user_data)
{
- GtkWidget *nb;
+ XScreenSaverDialog *dialog = XSCREENSAVER_DIALOG (user_data);
+ XScreenSaverWindow *win = dialog->main;
+ state *s = &win->state;
+ GtkNotebook *notebook = GTK_NOTEBOOK (dialog->opt_notebook);
+ if (s->debug_p) fprintf (stderr, "%s: settings advanced button\n", blurb());
+ settings_sync_cmd_text (s);
+ gtk_notebook_set_current_page (notebook, 1);
+}
- nb = name_to_widget (global_state_kludge, "preview_notebook");
- gtk_notebook_set_show_tabs (GTK_NOTEBOOK (nb), FALSE);
- return name_to_widget (global_state_kludge, "xscreensaver_demo");
+/* The "Standard" button on the settings dialog. */
+G_MODULE_EXPORT void
+settings_std_cb (GtkButton *button, gpointer user_data)
+{
+ XScreenSaverDialog *dialog = XSCREENSAVER_DIALOG (user_data);
+ XScreenSaverWindow *win = dialog->main;
+ state *s = &win->state;
+ GtkNotebook *notebook = GTK_NOTEBOOK (dialog->opt_notebook);
+ if (s->debug_p) fprintf (stderr, "%s: settings standard button\n", blurb());
+ settings_sync_cmd_text (s);
+ gtk_notebook_set_current_page (notebook, 0);
}
-static GtkWidget *
-create_xscreensaver_settings_dialog (void)
+
+/* The "Reset to Defaults" button on the settings dialog. */
+G_MODULE_EXPORT void
+settings_reset_cb (GtkButton *button, gpointer user_data)
{
- GtkWidget *w, *box;
+ XScreenSaverDialog *dialog = XSCREENSAVER_DIALOG (user_data);
+ XScreenSaverWindow *win = dialog->main;
+ GtkWidget *cmd = GTK_WIDGET (dialog->cmd_text);
+ state *s = &win->state;
+ char *cmd_line;
+ if (s->debug_p) fprintf (stderr, "%s: settings reset button\n", blurb());
+ if (! s->cdata) return;
+ cmd_line = get_configurator_command_line (s->cdata, TRUE);
+ gtk_entry_set_text (GTK_ENTRY (cmd), cmd_line);
+ free (cmd_line);
+ populate_popup_window (s);
+}
- box = name_to_widget (global_state_kludge, "dialog_action_area");
- w = name_to_widget (global_state_kludge, "adv_button");
- gtk_button_box_set_child_secondary (GTK_BUTTON_BOX (box), w, TRUE);
+/* Called when "Advanced/Standard" buttons change the displayed page. */
+G_MODULE_EXPORT void
+settings_switch_page_cb (GtkNotebook *notebook, GtkWidget *page,
+ gint page_num, gpointer user_data)
+{
+ XScreenSaverDialog *dialog = XSCREENSAVER_DIALOG (user_data);
+ XScreenSaverWindow *win = dialog->main;
+ state *s = &win->state;
+ GtkWidget *adv = dialog->adv_button;
+ GtkWidget *std = dialog->std_button;
+ if (s->debug_p) fprintf (stderr, "%s: settings page changed\n", blurb());
- w = name_to_widget (global_state_kludge, "std_button");
- gtk_button_box_set_child_secondary (GTK_BUTTON_BOX (box), w, TRUE);
+ if (page_num == 0)
+ {
+ gtk_widget_show (adv);
+ gtk_widget_hide (std);
+ }
+ else if (page_num == 1)
+ {
+ gtk_widget_hide (adv);
+ gtk_widget_show (std);
+ }
+ else
+ abort();
- return name_to_widget (global_state_kludge, "xscreensaver_settings_dialog");
+ /* Nobody uses the "Advanced" tab. Let's just hide it.
+ (The tab still needs to be there, since the 'cmd_text' widget is
+ what gets stored into the .xscreensaver file.) */
+ gtk_widget_hide (adv);
+ gtk_widget_hide (std);
}
-int
-main (int argc, char **argv)
+/* The "Cancel" button on the Settings dialog. */
+G_MODULE_EXPORT void
+settings_cancel_cb (GtkWidget *button, gpointer user_data)
{
- XtAppContext app;
- state S, *s;
- saver_preferences *p;
- Bool prefs_p = False;
- Bool settings_p = False;
- int i;
- Display *dpy;
- Widget toplevel_shell;
- char *real_progname = argv[0];
- char *window_title;
- char *geom = 0;
- char *str;
+ XScreenSaverDialog *dialog = XSCREENSAVER_DIALOG (user_data);
+ XScreenSaverWindow *win = dialog->main;
+ state *s = &win->state;
+ if (s->debug_p) fprintf (stderr, "%s: settings cancel button\n", blurb());
+ gtk_widget_hide (GTK_WIDGET (dialog));
+ gtk_widget_unrealize (GTK_WIDGET (dialog));
+
+ /* Restart the hack running in the Preview window with the reset options. */
+ schedule_preview (s, dialog->unedited_cmdline);
+}
-# ifdef ENABLE_NLS
- bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
- textdomain (GETTEXT_PACKAGE);
- bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
-# endif /* ENABLE_NLS */
- str = strrchr (real_progname, '/');
- if (str) real_progname = str+1;
+/* The "Ok" button on the Settings dialog. */
+G_MODULE_EXPORT void
+settings_ok_cb (GtkWidget *button, gpointer user_data)
+{
+ XScreenSaverDialog *dialog = XSCREENSAVER_DIALOG (user_data);
+ XScreenSaverWindow *win = dialog->main;
+ state *s = &win->state;
+ GtkNotebook *notebook = GTK_NOTEBOOK (dialog->opt_notebook);
+ int page = gtk_notebook_get_current_page (notebook);
+ if (s->debug_p) fprintf (stderr, "%s: settings ok button\n", blurb());
- s = &S;
- memset (s, 0, sizeof(*s));
- s->initializing_p = True;
- p = &s->prefs;
+ if (page == 0)
+ /* Regenerate the command-line from the widget contents before saving.
+ But don't do this if we're looking at the command-line page already,
+ or we will blow away what they typed... */
+ settings_sync_cmd_text (s);
- global_state_kludge = s; /* I hate C so much... */
+ flush_popup_changes_and_save (s);
+ gtk_widget_hide (GTK_WIDGET (dialog));
+ gtk_widget_unrealize (GTK_WIDGET (dialog));
+}
- progname = real_progname;
- s->short_version = XSCREENSAVER_VERSION;
+/* Called when any widget value is changed in the Settings dialog. */
+static void
+dialog_change_cb (GtkWidget *widget, gpointer user_data)
+{
+ state *s = (state *) user_data;
+ XScreenSaverDialog *dialog = XSCREENSAVER_DIALOG (s->dialog);
+ char *cur_cmd, *def_cmd;
+ const char *prev_cmd;
+ if (!dialog || !s->cdata) return;
+ settings_sync_cmd_text (s);
+ cur_cmd = get_configurator_command_line (s->cdata, FALSE);
+ def_cmd = get_configurator_command_line (s->cdata, TRUE);
+ prev_cmd = dialog->unedited_cmdline;
- /* Register our error message logger for every ``log domain'' known.
- There's no way to do this globally, so I grepped the Gtk/Gdk sources
- for all of the domains that seem to be in use.
- */
- {
- const char * const domains[] = { 0,
- "Gtk", "Gdk", "GLib", "GModule",
- "GThread", "Gnome", "GnomeUI" };
- for (i = 0; i < countof(domains); i++)
- g_log_set_handler (domains[i], G_LOG_LEVEL_MASK, g_log_handler, 0);
- }
+ /* "Reset to Defaults" button enabled only if current cmd is not default. */
+ gtk_widget_set_sensitive (dialog->reset_button,
+ !!strcmp (cur_cmd, def_cmd));
- /* This is gross, but Gtk understands --display and not -display...
- */
- for (i = 1; i < argc; i++)
- if (argv[i][0] && argv[i][1] &&
- !strncmp(argv[i], "-display", strlen(argv[i])))
- argv[i] = "--display";
+ /* "Save" button enabled only if current cmd is edited. */
+ gtk_widget_set_sensitive (dialog->ok_button,
+ !!strcmp (cur_cmd, prev_cmd));
+ /* Restart the hack running in the Preview window with the prevailing,
+ un-saved set of options, for a realtime preview of what they do. */
+ schedule_preview (s, cur_cmd);
- /* We need to parse this arg really early... Sigh. */
- for (i = 1; i < argc; i++)
- {
- if (argv[i] &&
- (!strcmp(argv[i], "--debug") ||
- !strcmp(argv[i], "-debug") ||
- !strcmp(argv[i], "-d")))
- {
- int j;
- s->debug_p = True;
- for (j = i; j < argc; j++) /* remove it from the list */
- argv[j] = argv[j+1];
- argc--;
- i--;
- }
- else if (argv[i] &&
- argc > i+1 &&
- *argv[i+1] &&
- (!strcmp(argv[i], "-geometry") ||
- !strcmp(argv[i], "-geom") ||
- !strcmp(argv[i], "-geo") ||
- !strcmp(argv[i], "-g")))
- {
- int j;
- geom = argv[i+1];
- for (j = i; j < argc; j++) /* remove them from the list */
- argv[j] = argv[j+2];
- argc -= 2;
- i -= 2;
- }
- else if (argv[i] &&
- argc > i+1 &&
- *argv[i+1] &&
- (!strcmp(argv[i], "--configdir")))
- {
- int j;
- struct stat st;
- hack_configuration_path = argv[i+1];
- for (j = i; j < argc; j++) /* remove them from the list */
- argv[j] = argv[j+2];
- argc -= 2;
- i -= 2;
-
- if (0 != stat (hack_configuration_path, &st))
- {
- char buf[255];
- sprintf (buf, "%s: %.200s", blurb(), hack_configuration_path);
- perror (buf);
- exit (1);
- }
- else if (!S_ISDIR (st.st_mode))
- {
- fprintf (stderr, "%s: not a directory: %s\n",
- blurb(), hack_configuration_path);
- exit (1);
- }
- }
- }
+ free (cur_cmd);
+ free (def_cmd);
+}
- if (s->debug_p)
- fprintf (stderr, "%s: using config directory \"%s\"\n",
- progname, hack_configuration_path);
+/* Fill in the contents of the "Settings" dialog for the current hack.
+ It may or may not currently be visible.
+ */
+static void
+populate_popup_window (state *s)
+{
+ XScreenSaverWindow *win = XSCREENSAVER_WINDOW (s->window);
+ XScreenSaverDialog *dialog = XSCREENSAVER_DIALOG (s->dialog);
+ GtkLabel *doc = dialog ? GTK_LABEL (dialog->doc) : 0;
+ char *doc_string = 0;
- /* Let Gtk open the X connection, then initialize Xt to use that
- same connection. Doctor Frankenstein would be proud.
- */
- gtk_init (&argc, &argv);
+ if (s->cdata)
+ {
+ free_conf_data (s->cdata);
+ s->cdata = 0;
+ }
+ {
+ saver_preferences *p = &s->prefs;
+ int list_elt = selected_list_element (s);
+ int hack_number = (list_elt >= 0 && list_elt < s->list_count
+ ? s->list_elt_to_hack_number[list_elt]
+ : -1);
+ screenhack *hack = (hack_number >= 0 ? p->screenhacks[hack_number] : 0);
+ if (hack && dialog)
+ {
+ GtkWidget *parent = dialog->settings_vbox;
+ GtkWidget *cmd = GTK_WIDGET (dialog->cmd_text);
+ const char *cmd_line = gtk_entry_get_text (GTK_ENTRY (cmd));
+ if (!cmd_line) abort();
+ s->cdata = load_configurator (cmd_line, dialog_change_cb, s,
+ s->debug_p);
+ dialog_change_cb (NULL, s);
+ if (s->cdata && s->cdata->widget)
+ gtk_box_pack_start (GTK_BOX (parent), s->cdata->widget,
+ TRUE, TRUE, 0);
- /* We must read exactly the same resources as xscreensaver.
- That means we must have both the same progclass *and* progname,
- at least as far as the resource database is concerned. So,
- put "xscreensaver" in argv[0] while initializing Xt.
- */
- argv[0] = "xscreensaver";
- progname = argv[0];
+ /* Make the pretty name on the tab boxes include the year and be bold.
+ */
+ if (s->cdata && s->cdata->year)
+ {
+ XScreenSaverWindow *win = XSCREENSAVER_WINDOW (s->window);
+ Display *dpy = s->dpy;
+ GtkFrame *frame1 = GTK_FRAME (win->preview_frame);
+ GtkFrame *frame2 = GTK_FRAME (dialog->opt_frame);
+ char *pretty_name = (hack->name
+ ? strdup (hack->name)
+ : make_hack_name (dpy, hack->command));
+ char *s2 = (char *) malloc (strlen (pretty_name) + 20);
+ sprintf (s2, "<b>%s (%d)</b>", pretty_name, s->cdata->year);
+ free (pretty_name);
+ pretty_name = s2;
+ gtk_frame_set_label (frame1, _(pretty_name));
+ gtk_frame_set_label (frame2, _(pretty_name));
+ gtk_label_set_use_markup ( /* Must be after set_label */
+ GTK_LABEL (gtk_frame_get_label_widget (frame1)), TRUE);
+ gtk_label_set_use_markup (
+ GTK_LABEL (gtk_frame_get_label_widget (frame2)), TRUE);
+ free (pretty_name);
+ }
+ }
+ }
- /* Teach Xt to use the Display that Gtk/Gdk have already opened.
- */
- XtToolkitInitialize ();
- app = XtCreateApplicationContext ();
- dpy = GDK_DISPLAY();
- XtAppSetFallbackResources (app, defaults);
- XtDisplayInitialize (app, dpy, progname, progclass, 0, 0, &argc, argv);
- toplevel_shell = XtAppCreateShell (progname, progclass,
- applicationShellWidgetClass,
- dpy, 0, 0);
-
- dpy = XtDisplay (toplevel_shell);
- db = XtDatabase (dpy);
- XtGetApplicationNameAndClass (dpy, (char **) &progname, &progclass);
- XSetErrorHandler (demo_ehandler);
-
- /* Let's just ignore these. They seem to confuse Irix Gtk... */
- signal (SIGPIPE, SIG_IGN);
-
- /* After doing Xt-style command-line processing, complain about any
- unrecognized command-line arguments.
- */
- for (i = 1; i < argc; i++)
+ doc_string = (s->cdata && s->cdata->description && *s->cdata->description
+ ? _(s->cdata->description)
+ : 0);
+ doc_string = hreffify (doc_string);
+ if (doc)
{
- char *str = argv[i];
- if (str[0] == '-' && str[1] == '-')
- str++;
- if (!strcmp (str, "-prefs"))
- prefs_p = True;
- else if (!strcmp (str, "-settings"))
- settings_p = True;
- else
- {
- fprintf (stderr, _("%s: unknown option: %s\n"), real_progname,
- argv[i]);
- fprintf (stderr, "%s: %s\n", real_progname, usage);
- exit (1);
- }
+ GtkWidget *w = dialog->dialog_vbox;
+ gtk_label_set_text (doc, (doc_string
+ ? doc_string
+ : _("No description available.")));
+ gtk_label_set_use_markup (doc, TRUE);
+
+ /* Shrink the dialog to the minimum viable size. */
+ gtk_window_resize (GTK_WINDOW (dialog), 1, 1);
+
+ gtk_widget_hide (w);
+ gtk_widget_unrealize (w);
+ gtk_widget_realize (w);
+ gtk_widget_show (w);
}
- /* Load the init file, which may end up consulting the X resource database
- and the site-wide app-defaults file. Note that at this point, it's
- important that `progname' be "xscreensaver", rather than whatever
- was in argv[0].
- */
- p->db = db;
- s->multi_screen_p = multi_screen_p (dpy);
-
- init_xscreensaver_atoms (dpy);
- hack_environment (s); /* must be before initialize_sort_map() */
-
- load_init_file (dpy, p);
- initialize_sort_map (s);
-
- /* Now that Xt has been initialized, and the resources have been read,
- we can set our `progname' variable to something more in line with
- reality.
- */
- progname = real_progname;
+ /* Also set the documentation on the main window, below the preview. */
+ {
+ GtkLabel *doc2 = GTK_LABEL (win->short_preview_label);
+ GtkLabel *doc3 = GTK_LABEL (win->preview_author_label);
+ char *s2 = 0;
+ char *s3 = 0;
+ if (doc_string)
+ {
+ /* Keep only the first paragraph, and the last line.
+ Omit everything in between. */
+ const char *second_para = strstr (doc_string, "\n\n");
+ const char *last_line = strrchr (doc_string, '\n');
+ s2 = strdup (doc_string);
+ if (second_para)
+ s2[second_para - doc_string] = 0;
+ if (last_line)
+ s3 = strdup (last_line + 1);
+ }
-#if 0
- /* Print out all the resources we read. */
- {
- XrmName name = { 0 };
- XrmClass class = { 0 };
- int count = 0;
- XrmEnumerateDatabase (db, &name, &class, XrmEnumAllLevels, mapper,
- (POINTER) &count);
+ gtk_label_set_text (doc2, (s2
+ ? _(s2)
+ : _("No description available.")));
+ gtk_label_set_text (doc3, (s3 ? _(s3) : ""));
+ if (s2) free (s2);
+ if (s3) free (s3);
}
-#endif
- init_xscreensaver_atoms (dpy);
+ if (doc_string)
+ free (doc_string);
+}
- /* Create the window and all its widgets.
- */
- s->base_widget = create_xscreensaver_demo ();
- s->popup_widget = create_xscreensaver_settings_dialog ();
- s->toplevel_widget = s->base_widget;
+static void
+sensitize_demo_widgets (state *s, Bool sensitive_p)
+{
+ XScreenSaverWindow *win = XSCREENSAVER_WINDOW (s->window);
+ XScreenSaverDialog *dialog = XSCREENSAVER_DIALOG (s->dialog);
+ gtk_widget_set_sensitive (win->demo, sensitive_p);
+ gtk_widget_set_sensitive (win->settings, sensitive_p);
+ if (dialog)
+ {
+ gtk_widget_set_sensitive (dialog->cmd_label, sensitive_p);
+ gtk_widget_set_sensitive (dialog->cmd_text, sensitive_p);
+ gtk_widget_set_sensitive (dialog->manual, sensitive_p);
+ gtk_widget_set_sensitive (dialog->visual, sensitive_p);
+ gtk_widget_set_sensitive (dialog->visual_combo, sensitive_p);
+ }
+}
- /* Set the main window's title. */
- {
- char *base_title = _("Screensaver Preferences");
- char *v = (char *) strdup(strchr(screensaver_id, ' '));
- char *s1, *s2, *s3, *s4;
- s1 = (char *) strchr(v, ' '); s1++;
- s2 = (char *) strchr(s1, ' ');
- s3 = (char *) strchr(v, '('); s3++;
- s4 = (char *) strchr(s3, ')');
- *s2 = 0;
- *s4 = 0;
-
- window_title = (char *) malloc (strlen (base_title) +
- strlen (progclass) +
- strlen (s1) + strlen (s3) +
- 100);
- sprintf (window_title, "%s (%s %s, %s)", base_title, progclass, s1, s3);
- gtk_window_set_title (GTK_WINDOW (s->toplevel_widget), window_title);
- gtk_window_set_title (GTK_WINDOW (s->popup_widget), window_title);
- free (v);
- }
- /* Adjust the (invisible) notebooks on the popup dialog... */
- {
- GtkNotebook *notebook =
- GTK_NOTEBOOK (name_to_widget (s, "opt_notebook"));
- GtkWidget *std = GTK_WIDGET (name_to_widget (s, "std_button"));
- int page = 0;
+/* Flush out any changes made in the popup dialog box (where changes
+ take place only when the OK button is clicked.)
+ */
+static Bool
+flush_popup_changes_and_save (state *s)
+{
+ XScreenSaverDialog *dialog = XSCREENSAVER_DIALOG (s->dialog);
- gtk_widget_hide (std);
+ Bool changed = FALSE;
+ saver_preferences *p = &s->prefs;
+ int list_elt = selected_list_element (s);
- gtk_notebook_set_page (notebook, page);
- gtk_notebook_set_show_tabs (notebook, False);
- }
+ GtkEntry *cmd = GTK_ENTRY (dialog->cmd_text);
+ GtkWidget *vis = GTK_WIDGET (dialog->visual_combo);
+ GtkEntry *visent = GTK_ENTRY (gtk_bin_get_child (GTK_BIN (vis)));
+
+ const char *visual = gtk_entry_get_text (visent);
+ const char *command = gtk_entry_get_text (cmd);
+
+ char c;
+ unsigned long id;
+
+ if (s->saving_p) return FALSE;
+ s->saving_p = TRUE;
+
+ if (list_elt < 0)
+ goto DONE;
+
+ if (maybe_reload_init_file (s) != 0)
+ {
+ changed = TRUE;
+ goto DONE;
+ }
- /* Various other widget initializations...
+ /* Sanity-check and canonicalize whatever the user typed into the combo box.
*/
- gtk_signal_connect (GTK_OBJECT (s->toplevel_widget), "delete_event",
- GTK_SIGNAL_FUNC (wm_toplevel_close_cb),
- (gpointer) s);
- gtk_signal_connect (GTK_OBJECT (s->popup_widget), "delete_event",
- GTK_SIGNAL_FUNC (wm_popup_close_cb),
- (gpointer) s);
+ if (!strcasecmp (visual, "")) visual = "";
+ else if (!strcasecmp (visual, "any")) visual = "";
+ else if (!strcasecmp (visual, "default")) visual = "Default";
+ else if (!strcasecmp (visual, "default-n")) visual = "Default-N";
+ else if (!strcasecmp (visual, "default-i")) visual = "Default-I";
+ else if (!strcasecmp (visual, "best")) visual = "Best";
+ else if (!strcasecmp (visual, "mono")) visual = "Mono";
+ else if (!strcasecmp (visual, "monochrome")) visual = "Mono";
+ else if (!strcasecmp (visual, "gray")) visual = "Gray";
+ else if (!strcasecmp (visual, "grey")) visual = "Gray";
+ else if (!strcasecmp (visual, "color")) visual = "Color";
+ else if (!strcasecmp (visual, "gl")) visual = "GL";
+ else if (!strcasecmp (visual, "staticgray")) visual = "StaticGray";
+ else if (!strcasecmp (visual, "staticcolor")) visual = "StaticColor";
+ else if (!strcasecmp (visual, "truecolor")) visual = "TRUEColor";
+ else if (!strcasecmp (visual, "grayscale")) visual = "GrayScale";
+ else if (!strcasecmp (visual, "greyscale")) visual = "GrayScale";
+ else if (!strcasecmp (visual, "pseudocolor")) visual = "PseudoColor";
+ else if (!strcasecmp (visual, "directcolor")) visual = "DirectColor";
+ else if (1 == sscanf (visual, " %lu %c", &id, &c)) ;
+ else if (1 == sscanf (visual, " 0x%lx %c", &id, &c)) ;
+ else visual = "";
- populate_hack_list (s);
- populate_prefs_page (s);
- sensitize_demo_widgets (s, False);
- scroll_to_current_hack (s);
+ changed = flush_changes (s, list_elt, -1, command, visual);
+ if (changed)
+ {
+ demo_write_init_file (s, p);
- /* Hook up callbacks to the items on the mode menu. */
- gtk_signal_connect (GTK_OBJECT (name_to_widget (s, "mode_menu")),
- "changed", GTK_SIGNAL_FUNC (mode_menu_item_cb),
- (gpointer) s);
- if (! s->multi_screen_p)
+ /* Do this to re-launch the hack if (and only if) the command line
+ has changed. */
+ populate_demo_window (s, selected_list_element (s));
+ }
+
+ DONE:
+ s->saving_p = FALSE;
+ return changed;
+}
+
+
+/****************************************************************************
+
+ XScreenSaverWindow
+
+ ****************************************************************************/
+
+
+static void
+xscreensaver_window_destroy (GObject *object)
+{
+ /* Called by WM close box, but not by File / Quit */
+ XScreenSaverWindow *win = XSCREENSAVER_WINDOW (object);
+ quit_menu_cb (NULL, win); /* Shouldn't return? */
+ G_OBJECT_CLASS (xscreensaver_window_parent_class)->dispose (object);
+}
+
+
+/* gtk_window_move() sets the origin of the window's WM decorations, but
+ GTK's "configure-event" returns the root-relative origin of the window
+ within the decorations, so the "configure-event" numbers are too large by
+ the size of the decorations (title bar and border). Without compensating
+ for this, the window would move down and slightly to the right every time
+ we saved and restored. GDK provides no way to find those numbers, so we
+ have to hack it out X11 style...
+ */
+static void
+wm_decoration_origin (GtkWindow *gtkw, int *x, int *y)
+{
+ Display *dpy = gdk_x11_get_default_xdisplay();
+ GdkWindow *gdkw = gtk_widget_get_window (GTK_WIDGET (gtkw));
+ Window xw = gdk_x11_window_get_xid (gdkw);
+
+ Window root, parent, *kids;
+ unsigned int nkids;
+
+ Atom type = None;
+ int format;
+ unsigned long nitems, bytesafter;
+ unsigned char *data;
+
+ static Atom swm_vroot = 0;
+ XWindowAttributes xgwa;
+
+ if (!dpy || !xw) return;
+ if (! XQueryTree (dpy, xw, &root, &parent, &kids, &nkids))
+ abort ();
+
+ if (parent == root) /* No window above us at all */
+ return;
+
+ if (! swm_vroot)
+ swm_vroot = XInternAtom (dpy, "__SWM_VROOT", FALSE);
+
+ /* If parent is a virtual root, there is no intervening WM decoration. */
+ if (XGetWindowProperty (dpy, parent, swm_vroot,
+ 0, 0, FALSE, AnyPropertyType,
+ &type, &format, &nitems, &bytesafter,
+ (unsigned char **) &data)
+ == Success
+ && type != None)
+ return;
+
+ /* If we have a parent, it is the WM decoration, so use its origin. */
+ if (! XGetWindowAttributes (dpy, parent, &xgwa))
+ abort();
+ *x = xgwa.x;
+ *y = xgwa.y;
+}
+
+
+static void
+save_window_position (state *s, GtkWindow *win, int x, int y, Bool dialog_p)
+{
+ saver_preferences *p = &s->prefs;
+ int win_x, win_y, dialog_x, dialog_y;
+ char dummy;
+ char *old = p->settings_geom;
+ char str[100];
+
+ if (!s->dpy || s->wayland_p) return;
+ wm_decoration_origin (win, &x, &y);
+
+ if (!old || !*old ||
+ 4 != sscanf (old, " %d , %d %d , %d %c",
+ &win_x, &win_y, &dialog_x, &dialog_y, &dummy))
+ win_x = win_y = dialog_x = dialog_y = -1;
+
+ if (dialog_p)
+ dialog_x = x, dialog_y = y;
+ else
+ win_x = x, win_y = y;
+
+ sprintf (str, "%d,%d %d,%d", win_x, win_y, dialog_x, dialog_y);
+
+ if (old && !strcmp (old, str)) return; /* unchanged */
+
+ p->settings_geom = strdup (str);
+
+ if (s->debug_p)
+ fprintf (stderr, "%s: geom: %s => %s\n", blurb(), old, str);
+
+ /* This writes the .xscreensaver file repeatedly as the window is dragged,
+ which is too much. We could defer it with a timer. But instead let's
+ just not save it upon resize, and only save the positions once the
+ file is written due to some other change.
+ */
+ /* demo_write_init_file (s, p); */
+ if (old) free (old);
+}
+
+
+static void
+restore_window_position (state *s, GtkWindow *window, Bool dialog_p)
+{
+ saver_preferences *p = &s->prefs;
+ int win_x, win_y, dialog_x, dialog_y, x, y;
+ char dummy;
+ char *old = p->settings_geom;
+
+ if (!old || !*old ||
+ 4 != sscanf (old, " %d , %d %d , %d %c",
+ &win_x, &win_y, &dialog_x, &dialog_y, &dummy))
+ win_x = win_y = dialog_x = dialog_y = -1;
+
+ if (dialog_p)
+ x = dialog_x, y = dialog_y;
+ else
+ x = win_x, y = win_y;
+
+ if (x <= 0 || y <= 0) return;
+
+ if (s->debug_p)
+ fprintf (stderr, "%s: restore origin: %d,%d\n", blurb(), x, y);
+ gtk_window_move (window, x, y);
+}
+
+
+/* When the window is moved, save the new origin in .xscreensaver. */
+static gboolean
+xscreensaver_window_resize_cb (GtkWindow *window, GdkEvent *event,
+ gpointer data)
+{
+ XScreenSaverWindow *win = XSCREENSAVER_WINDOW (window);
+ state *s = &win->state;
+ save_window_position (s, GTK_WINDOW (win),
+ event->configure.x, event->configure.y, FALSE);
+ return FALSE;
+}
+
+
+static int
+delayed_scroll_kludge (gpointer data)
+{
+ state *s = (state *) data;
+ XScreenSaverWindow *win = XSCREENSAVER_WINDOW (s->window);
+ GtkWidget *list_widget = win->list;
+ ensure_selected_item_visible (list_widget);
+ return FALSE; /* do not re-execute timer */
+}
+
+
+static void
+quit_action_cb (GSimpleAction *action, GVariant *parameter, gpointer user_data)
+{
+ quit_menu_cb (NULL, user_data);
+}
+
+
+static GActionEntry app_entries[] = {
+ { "quit", quit_action_cb, NULL, NULL, NULL },
+/*
+ { "undo", undo_action_cb, NULL, NULL, NULL },
+ { "redo", redo_action_cb, NULL, NULL, NULL },
+ { "cut", cut_action_cb, NULL, NULL, NULL },
+ { "copy", copy_action_cb, NULL, NULL, NULL },
+ { "paste", paste_action_cb, NULL, NULL, NULL },
+ { "delete", delete_action_cb, NULL, NULL, NULL },
+*/
+};
+
+/* #### I don't know how to make the accelerators show up on the menu items,
+ and I don't understand the difference between "callbacks" and "actions".
+ I see examples in other .ui files that do things like:
+
+ <ui>
+ <menubar name="menubar">
+ <menu action="file">
+ <menuitem name="activate_menu" action="activate_action"/>
+ or
+ <menu id="menubar">
+ <submenu>
+ <attribute name="label">File</attribute>
+ <section>
+ <item>
+ <attribute name="label">Activate</attribute>
+ <attribute name="action">app.activate</attribute>
+
+ but when I put variants of that in demo.ui, nothing shows up.
+
+ It would be nice to have an "Edit" menu with working text-editing commands
+ on it, for use with our various text fields. One would think that a GUI
+ toolkit would provide boilerplate for such things, but nooooo...
+ */
+const gchar *accels[][2] = {
+ { "app.quit", "<Ctrl>Q" },
+/*
+ { "app.undo", "<Ctrl>Z" },
+ { "app.redo", "<Ctrl>Y" },
+ { "app.cut", "<Ctrl>X" },
+ { "app.copy", "<Ctrl>C" },
+ { "app.paste", "<Ctrl>V" },
+*/
+};
+
+
+static void
+xscreensaver_window_realize (GtkWidget *self, gpointer user_data)
+{
+ XScreenSaverWindow *win = XSCREENSAVER_WINDOW (self);
+ state *s = &win->state;
+ saver_preferences *p = &s->prefs;
+
+ s->initializing_p = TRUE;
+ s->short_version = XSCREENSAVER_VERSION;
+ s->window = GTK_WINDOW (win);
+
+ s->dpy = gdk_x11_get_default_xdisplay();
+
+ /* Debian 11.4, Gtk 3.24.24, 2022: under Wayland, get_default_xdisplay is
+ returning uninitialized data! However, gdk_x11_window_get_xid prints a
+ warning and returns NULL. So let's try that, and as a fallback, also try
+ and sanity check the contents of the Display structure...
+ */
+ if (! gdk_x11_window_get_xid (gtk_widget_get_window (self)))
{
- GtkComboBox *opt = GTK_COMBO_BOX (name_to_widget (s, "mode_menu"));
- GtkTreeModel *list = gtk_combo_box_get_model (opt);
- unsigned int i;
- for (i = 0; i < countof(mode_menu_order); i++)
+ s->dpy = NULL;
+ s->wayland_p = TRUE;
+ }
+
+ if (s->dpy)
+ {
+ if (ProtocolVersion (s->dpy) != 11 ||
+ ProtocolRevision (s->dpy) != 0)
{
- /* The "random-same" mode menu item does not appear unless
- there are multiple screens.
- */
- if (mode_menu_order[i] == RANDOM_HACKS_SAME)
- {
- GtkTreeIter iter;
- gtk_tree_model_iter_nth_child (list, &iter, NULL, i);
- gtk_list_store_remove (GTK_LIST_STORE (list), &iter);
- break;
- }
+ fprintf (stderr, "%s: uninitialized data in Display: "
+ "protocol version %d.%d!\n", blurb(),
+ ProtocolVersion(s->dpy), ProtocolRevision(s->dpy));
+ s->dpy = NULL;
+ s->wayland_p = TRUE;
}
-
- /* recompute option-menu size */
- gtk_widget_unrealize (GTK_WIDGET (opt));
- gtk_widget_realize (GTK_WIDGET (opt));
}
+ /* If we don't have a display connection, then we are surely under Wayland
+ even if the environment variable is not set.
+ */
+ if (!s->dpy &&
+ !getenv ("WAYLAND_DISPLAY") &&
+ !getenv ("WAYLAND_SOCKET"))
+ putenv ("WAYLAND_DISPLAY=probably");
+
+ if (getenv ("WAYLAND_DISPLAY") ||
+ getenv ("WAYLAND_SOCKET"))
+ s->wayland_p = TRUE;
- /* Handle the -prefs command-line argument. */
- if (prefs_p)
+ /* If GTK is running directly under Wayland, try to open an X11 connection
+ to XWayland anyway, so that get_string_resource and load_init_file work.
+ */
+ if (! s->dpy)
{
- GtkNotebook *notebook =
- GTK_NOTEBOOK (name_to_widget (s, "notebook"));
- gtk_notebook_set_page (notebook, 1);
+ s->dpy = XOpenDisplay (NULL);
+ if (s->debug_p)
+ {
+ if (s->dpy)
+ fprintf (stderr, "%s: opened secondary XWayland connection\n",
+ blurb());
+ else
+ fprintf (stderr, "%s: failed to open XWayland connection\n",
+ blurb());
+ }
}
- free (window_title);
- window_title = 0;
+ /* Teach Xt to use the Display that Gtk/Gdk have already opened.
+ */
+ if (s->dpy)
+ {
+ XtAppContext app;
+ int argc = 0;
+ char *argv[2];
+ const char *oprogname = progname;
- /* After picking the default size, allow -geometry to override it. */
- if (geom)
- gtk_window_parse_geometry (GTK_WINDOW (s->toplevel_widget), geom);
+ progname = "xscreensaver"; /* For X resources */
+ argv[argc++] = (char *) progname;
+ argv[argc] = 0;
- gtk_widget_show (s->toplevel_widget);
- init_icon (GET_WINDOW (GTK_WIDGET (s->toplevel_widget))); /* after `show' */
- fix_preview_visual (s);
+ XtToolkitInitialize ();
+ app = XtCreateApplicationContext ();
+ XtAppSetFallbackResources (app, defaults);
+ XtDisplayInitialize (app, s->dpy, progname, progclass, 0, 0, &argc, argv);
+ /* Result discarded and leaked */
+ XtAppCreateShell (progname, progclass, applicationShellWidgetClass,
+ s->dpy, 0, 0);
+ p->db = XtDatabase (s->dpy);
+ XSetErrorHandler (x_error);
- /* Realize page zero, so that we can diddle the scrollbar when the
- user tabs back to it -- otherwise, the current hack isn't scrolled
- to the first time they tab back there, when started with "-prefs".
- (Though it is if they then tab away, and back again.)
+ signal (SIGPIPE, SIG_IGN); /* Is this necessary? */
- #### Bah! This doesn't work. Gtk eats my ass! Someone who
- #### understands this crap, explain to me how to make this work.
- */
- gtk_widget_realize (name_to_widget (s, "demos_table"));
+ progname = oprogname;
+# if 0
+ /* Print out all the Xrm resources we read. */
+ {
+ XrmName name = { 0 };
+ XrmClass class = { 0 };
+ int count = 0;
+ XrmEnumerateDatabase (db, &name, &class, XrmEnumAllLevels, xrm_mapper,
+ (void *) &count);
+ }
+# endif
+ }
- gtk_timeout_add (60 * 1000, check_blanked_timer, s);
+ s->multi_screen_p = multi_screen_p (s->dpy);
+ if (s->dpy)
+ init_xscreensaver_atoms (s->dpy);
- /* Handle the --settings command-line argument. */
- if (settings_p)
- gtk_timeout_add (500, settings_timer, 0);
+ hack_environment (s); /* must be before initialize_sort_map() */
+ load_init_file (s->dpy, p);
+ initialize_sort_map (s);
+ s->dialog = g_object_new (XSCREENSAVER_DIALOG_TYPE, NULL);
+ XSCREENSAVER_DIALOG (s->dialog)->main = win;
- /* Issue any warnings about the running xscreensaver daemon.
- Wait a few seconds, in case things are still starting up. */
- if (! s->debug_p)
- gtk_timeout_add (5 * 1000, the_network_is_not_the_computer, s);
-
-
- if (time ((time_t *) 0) - XSCREENSAVER_RELEASED > 60*60*24*30*17)
- warning_dialog (s->toplevel_widget,
- _("Warning:\n\n"
- "This version of xscreensaver is VERY OLD!\n"
- "Please upgrade!\n"
- "\n"
- "https://www.jwz.org/xscreensaver/\n"
- "\n"
- "(If this is the latest version that your distro ships, then\n"
- "your distro is doing you a disservice. Build from source.)\n"
- ),
- D_NONE, 7);
-
- /* Run the Gtk event loop, and not the Xt event loop. This means that
- if there were Xt timers or fds registered, they would never get serviced,
- and if there were any Xt widgets, they would never have events delivered.
- Fortunately, we're using Gtk for all of the UI, and only initialized
- Xt so that we could process the command line and use the X resource
- manager.
- */
- s->initializing_p = False;
+ gtk_window_set_transient_for (GTK_WINDOW (s->dialog), GTK_WINDOW (win));
- /* This totally sucks -- set a timer that whacks the scrollbar 0.5 seconds
- after we start up. Otherwise, it always appears scrolled to the top
- when in crapplet-mode. */
- gtk_timeout_add (500, delayed_scroll_kludge, s);
+ sensitize_menu_items (s, TRUE);
+ populate_hack_list (s);
+ populate_prefs_page (s);
+ sensitize_demo_widgets (s, FALSE);
+ scroll_to_current_hack (s);
+ if (s->dpy && !s->wayland_p)
+ fix_preview_visual (s);
+ if (! s->multi_screen_p)
+ hide_mode_menu_random_same (s);
+
+ restore_window_position (s, GTK_WINDOW (self), FALSE);
+ g_timeout_add (60 * 1000, check_blanked_timer, s);
-#if 1
+ /* Attach the actions and their keybindings. */
+ {
+ int i;
+ GtkApplication *app = gtk_window_get_application (GTK_WINDOW (win));
+ g_action_map_add_action_entries (G_ACTION_MAP (app),
+ app_entries, countof (app_entries),
+ win);
+ for (i = 0; i < countof (accels); i++)
+ {
+ const gchar *a[2];
+ a[0] = accels[i][1];
+ a[1] = 0;
+ gtk_application_set_accels_for_action (GTK_APPLICATION (app),
+ accels[i][0], a);
+ }
+ }
+
+# if 0
/* Load every configurator in turn, to scan them for errors all at once. */
if (s->debug_p)
{
if (d) free_conf_data (d);
}
}
-#endif
+# endif
+
+
+ /* Issue any warnings about the running xscreensaver daemon.
+ Wait a few seconds, in case things are still starting up. */
+ g_timeout_add (5 * 1000, the_network_is_not_the_computer, s);
+
+ /* This totally sucks -- set a timer that whacks the scrollbar 0.5 seconds
+ after we start up. Otherwise, it always appears scrolled to the top. */
+ g_timeout_add (500, delayed_scroll_kludge, s);
+
+ s->initializing_p = FALSE;
+}
+
+
+static void
+xscreensaver_window_init (XScreenSaverWindow *win)
+{
+ gtk_widget_init_template (GTK_WIDGET (win));
+ g_signal_connect (win, "destroy",
+ G_CALLBACK (xscreensaver_window_destroy), win);
+ g_signal_connect (win, "realize",
+ G_CALLBACK (xscreensaver_window_realize), win);
+ g_signal_connect (win, "configure-event",
+ G_CALLBACK (xscreensaver_window_resize_cb),win);
+}
+
+
+static void
+xscreensaver_window_class_init (XScreenSaverWindowClass *class)
+{
+ gtk_widget_class_set_template_from_resource (GTK_WIDGET_CLASS (class),
+ "/org/jwz/xscreensaver/demo.ui");
+
+ /* Fill in the widget fields in XScreenSaverWindow with the corresponding
+ objects created from demo.ui. */
+# undef W
+# define W(NAME) \
+ gtk_widget_class_bind_template_child (GTK_WIDGET_CLASS (class), \
+ XScreenSaverWindow, NAME);
+ ALL_WINDOW_WIDGETS
+# undef W
+}
+
+
+/****************************************************************************
+
+ XScreenSaverDialog
+ ****************************************************************************/
- gtk_main ();
+static void
+xscreensaver_dialog_destroy (GObject *object)
+{
+ /* Called by WM close box, but not by File / Quit */
+ XScreenSaverDialog *dialog = XSCREENSAVER_DIALOG (object);
+ XScreenSaverWindow *win = dialog->main;
+ flush_dialog_changes_and_save (&win->state);
+ G_OBJECT_CLASS (xscreensaver_dialog_parent_class)->dispose (object);
+}
+
+
+static void
+xscreensaver_dialog_realize (GtkWidget *self, gpointer user_data)
+{
+ XScreenSaverDialog *dialog = XSCREENSAVER_DIALOG (self);
+ XScreenSaverWindow *win = dialog->main;
+ state *s = &win->state;
+ restore_window_position (s, GTK_WINDOW (self), TRUE);
+}
+
+
+/* When the window is moved, save the new origin in .xscreensaver. */
+static gboolean
+xscreensaver_dialog_resize_cb (GtkWindow *window, GdkEvent *event,
+ gpointer data)
+{
+ XScreenSaverDialog *dialog = XSCREENSAVER_DIALOG (window);
+ XScreenSaverWindow *win = dialog->main;
+ state *s = &win->state;
+ save_window_position (s, GTK_WINDOW (dialog),
+ event->configure.x, event->configure.y, TRUE);
+ return FALSE;
+}
+
+
+/* The WM close box. */
+static gboolean
+xscreensaver_dialog_delete_cb (GtkWidget *self, GdkEvent *event,
+ gpointer user_data)
+{
+ settings_cancel_cb (GTK_WIDGET (self), user_data);
+ return TRUE; /* Do not run other handlers */
+}
+
+
+static void
+xscreensaver_dialog_init (XScreenSaverDialog *win)
+{
+ gtk_widget_init_template (GTK_WIDGET (win));
+ g_signal_connect (win, "destroy",
+ G_CALLBACK (xscreensaver_dialog_destroy), win);
+ g_signal_connect (win, "realize",
+ G_CALLBACK (xscreensaver_dialog_realize), win);
+ g_signal_connect (win, "configure-event",
+ G_CALLBACK (xscreensaver_dialog_resize_cb), win);
+ g_signal_connect (win, "delete-event",
+ G_CALLBACK (xscreensaver_dialog_delete_cb), win);
+}
+
+
+static void
+xscreensaver_dialog_class_init (XScreenSaverDialogClass *class)
+{
+ gtk_widget_class_set_template_from_resource (GTK_WIDGET_CLASS (class),
+ "/org/jwz/xscreensaver/prefs.ui");
+
+ /* Fill in the widget fields in XScreenSaverDialog with the corresponding
+ objects created from prefs.ui. */
+# undef W
+# define W(NAME) \
+ gtk_widget_class_bind_template_child (GTK_WIDGET_CLASS (class), \
+ XScreenSaverDialog, NAME);
+ ALL_DIALOG_WIDGETS
+# undef W
+}
+
+
+/****************************************************************************
+
+ XScreenSaverApp
+
+ ****************************************************************************/
+
+
+static void
+xscreensaver_app_init (XScreenSaverApp *app)
+{
+}
- kill_preview_subproc (s, False);
- exit (0);
+
+static void
+xscreensaver_app_startup (GApplication *app)
+{
+ G_APPLICATION_CLASS (xscreensaver_app_parent_class)->startup (app);
+}
+
+
+static void
+xscreensaver_app_activate (GApplication *app)
+{
+ XScreenSaverWindow *win =
+ g_object_new (XSCREENSAVER_WINDOW_TYPE, "application", app, NULL);
+ win->state.debug_p = XSCREENSAVER_APP (app)->cmdline_debug_p;
+ gtk_widget_show_all (GTK_WIDGET (win));
+ gtk_window_present (GTK_WINDOW (win));
+}
+
+
+static void
+xscreensaver_app_open (GApplication *app,
+ GFile **files, gint n_files,
+ const gchar *hint)
+{
+ GList *windows = gtk_application_get_windows (GTK_APPLICATION (app));
+ if (windows)
+ gtk_window_present (GTK_WINDOW (windows->data));
+ else
+ xscreensaver_app_activate (app);
+}
+
+
+static int
+opts_cb (GApplication *app, GVariantDict *opts, gpointer data)
+{
+ if (g_variant_dict_contains (opts, "version")) {
+ fprintf (stderr, "%s\n", screensaver_id+4);
+ return 0;
+ } else if (g_variant_dict_contains (opts, "debug")) {
+ XSCREENSAVER_APP (app)->cmdline_debug_p = TRUE;
+ return -1;
+ } else {
+ return -1;
+ }
+}
+
+
+static void
+xscreensaver_app_class_init (XScreenSaverAppClass *class)
+{
+ G_APPLICATION_CLASS (class)->startup = xscreensaver_app_startup;
+ G_APPLICATION_CLASS (class)->activate = xscreensaver_app_activate;
+ G_APPLICATION_CLASS (class)->open = xscreensaver_app_open;
}
+static XScreenSaverApp *
+xscreensaver_app_new (void)
+{
+ XScreenSaverApp *app = g_object_new (XSCREENSAVER_APP_TYPE,
+ "application-id",
+ "org.jwz.xscreensaver.settings",
+ NULL);
+
+ g_application_add_main_option (G_APPLICATION (app), "version", 'v',
+ G_OPTION_FLAG_NONE, G_OPTION_ARG_NONE,
+ "Print the version number",
+ NULL);
+ g_application_add_main_option (G_APPLICATION (app), "debug", 0,
+ G_OPTION_FLAG_NONE, G_OPTION_ARG_NONE,
+ "Print diagnostics to stderr",
+ NULL);
+ g_signal_connect (app, "handle-local-options", G_CALLBACK (opts_cb), app);
+ return app;
+}
+
+
+int
+main (int argc, char *argv[])
+{
+ char *s;
+ progname = argv[0];
+ s = strrchr (progname, '/');
+ if (s) progname = s+1;
+ g_log_set_default_handler (g_logger, NULL);
+ g_log_set_writer_func (g_other_logger, NULL, NULL);
+ return g_application_run (G_APPLICATION (xscreensaver_app_new()),
+ argc, argv);
+}
+
+
+
#endif /* HAVE_GTK -- whole file */
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+ <template class="XScreenSaverWindow" parent="GtkApplicationWindow">
+ <property name="title" translatable="yes">XScreenSaver Settings</property>
+ <property name="type">GTK_WINDOW_TOPLEVEL</property>
+ <property name="window-position">GTK_WIN_POS_NONE</property>
+ <property name="modal">False</property>
+ <property name="resizable">True</property>
+ <property name="destroy-with-parent">False</property>
+ <property name="decorated">True</property>
+ <property name="skip-taskbar-hint">False</property>
+ <property name="skip-pager-hint">False</property>
+ <property name="type-hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
+ <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+ <property name="focus-on-map">True</property>
+ <property name="urgency-hint">False</property>
+ <child>
+ <object class="GtkAdjustment" id="adjustment1">
+ <property name="upper">720</property>
+ <property name="lower">1</property>
+ <property name="page-increment">15</property>
+ <property name="step-increment">1</property>
+ <property name="page-size">0</property>
+ <property name="value">1</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment2">
+ <property name="upper">720</property>
+ <property name="lower">0</property>
+ <property name="page-increment">15</property>
+ <property name="step-increment">1</property>
+ <property name="page-size">0</property>
+ <property name="value">0</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment3">
+ <property name="upper">720</property>
+ <property name="lower">0</property>
+ <property name="page-increment">15</property>
+ <property name="step-increment">1</property>
+ <property name="page-size">0</property>
+ <property name="value">0</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment4">
+ <property name="upper">1440</property>
+ <property name="lower">0</property>
+ <property name="page-increment">15</property>
+ <property name="step-increment">1</property>
+ <property name="page-size">0</property>
+ <property name="value">0</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment5">
+ <property name="upper">1440</property>
+ <property name="lower">0</property>
+ <property name="page-increment">15</property>
+ <property name="step-increment">1</property>
+ <property name="page-size">0</property>
+ <property name="value">0</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment6">
+ <property name="upper">1440</property>
+ <property name="lower">0</property>
+ <property name="page-increment">15</property>
+ <property name="step-increment">1</property>
+ <property name="page-size">0</property>
+ <property name="value">0</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment7">
+ <property name="upper">10</property>
+ <property name="lower">0</property>
+ <property name="page-increment">1</property>
+ <property name="step-increment">1</property>
+ <property name="page-size">0</property>
+ <property name="value">0</property>
+ </object>
+ <object class="GtkListStore" id="mode_menu_model">
+ <columns>
+ <column type="gchararray"/>
+ </columns>
+ <data>
+ <row>
+ <col id="0" translatable="yes">Disable Screen Saver</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">Blank Screen Only</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">Only One Screen Saver</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">Random Screen Saver</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">Same Random Savers</col>
+ </row>
+ </data>
+ </object>
+ <object class="GtkListStore" id="theme_menu_model">
+ <columns>
+ <column type="gchararray"/>
+ </columns>
+ <data>
+ <row>
+ <col id="0" translatable="yes">Default</col>
+ </row>
+ </data>
+ </object>
+ <object class="GtkBox" id="content_box">
+ <property name="visible">True</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkBox" id="outer_vbox">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">5</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkMenuBar" id="menubar">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <object class="GtkImageMenuItem">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label">gtk-file</property>
+ <property name="use-stock">True</property>
+ <property name="use-underline">True</property>
+ <signal handler="file_menu_cb" name="activate"/>
+ <child type="submenu">
+ <object class="GtkMenu">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <object class="GtkImageMenuItem" id="activate_menuitem">
+ <property name="label" translatable="yes">_Blank Screen Now</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="use-underline">True</property>
+ <signal handler="activate_menu_cb" name="activate"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImageMenuItem" id="lock_menuitem">
+ <property name="label" translatable="yes">_Lock Screen Now</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="use-underline">True</property>
+ <signal handler="lock_menu_cb" name="activate"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImageMenuItem" id="kill_menuitem">
+ <property name="label" translatable="yes">_Kill Daemon</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="use-underline">True</property>
+ <signal handler="kill_menu_cb" name="activate"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImageMenuItem">
+ <property name="label" translatable="yes">_Restart Daemon</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="use-underline">True</property>
+ <signal handler="restart_menu_cb" name="activate"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImageMenuItem">
+ <property name="label">gtk-quit</property>
+ <property name="use-stock">True</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="use-underline">True</property>
+ <signal handler="quit_menu_cb" name="activate"/>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+
+<!--
+ <child>
+ <object class="GtkImageMenuItem">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label">gtk-edit</property>
+ <property name="use-stock">True</property>
+ <property name="use-underline">True</property>
+ <child type="submenu">
+ <object class="GtkMenu">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <object class="GtkImageMenuItem">
+ <property name="label">gtk-undo</property>
+ <property name="use-stock">True</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="use-underline">True</property>
+ <signal handler="undo_menu_cb" name="activate"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImageMenuItem">
+ <property name="label">gtk-redo</property>
+ <property name="use-stock">True</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="use-underline">True</property>
+ <signal handler="redo_menu_cb" name="activate"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSeparatorMenuItem">
+ <property name="visible">True</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImageMenuItem">
+ <property name="label">gtk-cut</property>
+ <property name="use-stock">True</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="use-underline">True</property>
+ <signal handler="cut_menu_cb" name="activate"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImageMenuItem">
+ <property name="label">gtk-copy</property>
+ <property name="use-stock">True</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="use-underline">True</property>
+ <signal handler="copy_menu_cb" name="activate"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImageMenuItem">
+ <property name="label">gtk-paste</property>
+ <property name="use-stock">True</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="use-underline">True</property>
+ <signal handler="paste_menu_cb" name="activate"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImageMenuItem">
+ <property name="label">gtk-delete</property>
+ <property name="use-stock">True</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="use-underline">True</property>
+ <signal handler="delete_menu_cb" name="activate"/>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+-->
+
+ <child>
+ <object class="GtkImageMenuItem">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label">gtk-help</property>
+ <property name="use-stock">True</property>
+ <property name="use-underline">True</property>
+ <child type="submenu">
+ <object class="GtkMenu">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <object class="GtkImageMenuItem">
+ <property name="label">gtk-about</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="use-underline">True</property>
+ <property name="use-stock">True</property>
+ <signal handler="about_menu_cb" name="activate"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkImageMenuItem">
+ <property name="label" translatable="yes">Documentation...</property>
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="use-underline">True</property>
+ <signal handler="doc_menu_cb" name="activate"/>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="spacer_hbox">
+ <property name="border-width">8</property>
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+ <property name="orientation">horizontal</property>
+ <child>
+ <object class="GtkNotebook" id="notebook">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="show-tabs">True</property>
+ <property name="show-border">True</property>
+ <property name="tab-pos">GTK_POS_TOP</property>
+ <property name="scrollable">False</property>
+ <property name="enable-popup">False</property>
+ <signal handler="switch_page_cb" name="switch_page"/>
+ <child>
+ <object class="GtkTable" id="demos_table">
+ <property name="border-width">10</property>
+ <property name="visible">True</property>
+ <property name="n-rows">2</property>
+ <property name="n-columns">2</property>
+ <property name="homogeneous">False</property>
+ <property name="row-spacing">0</property>
+ <property name="column-spacing">0</property>
+ <child>
+ <object class="GtkTable" id="blanking_table">
+ <property name="visible">True</property>
+ <property name="n-rows">3</property>
+ <property name="n-columns">4</property>
+ <property name="homogeneous">False</property>
+ <property name="row-spacing">2</property>
+ <property name="column-spacing">0</property>
+ <child>
+ <object class="GtkLabel" id="cycle_label">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Cycle After</property>
+ <property name="use-underline">True</property>
+ <property name="use-markup">False</property>
+ <property name="justify">GTK_JUSTIFY_RIGHT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">1</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">8</property>
+ <property name="ypad">0</property>
+ <property name="mnemonic-widget">cycle_spinbutton</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width-chars">-1</property>
+ <property name="single-line-mode">False</property>
+ <property name="angle">0</property>
+ <accessibility>
+ <relation target="cycle_spinbutton" type="label-for"/>
+ <relation target="cycle_spinbutton" type="flows-to"/>
+ </accessibility>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="right-attach">2</property>
+ <property name="top-attach">1</property>
+ <property name="bottom-attach">2</property>
+ <property name="x-options">fill</property>
+ <property name="y-options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEventBox" id="lock_button_eventbox">
+ <property name="visible">True</property>
+ <property name="tooltip-text" translatable="yes">Whether a password should be required to un-blank the screen.</property>
+ <property name="visible-window">False</property>
+ <property name="above-child">False</property>
+ <child>
+ <object class="GtkCheckButton" id="lock_button">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="label" translatable="yes">_Lock Screen After </property>
+ <property name="use-underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus-on-click">True</property>
+ <property name="active">False</property>
+ <property name="inconsistent">False</property>
+ <property name="draw-indicator">True</property>
+ <accessibility>
+ <relation target="lock_spinbutton" type="controller-for"/>
+ <relation target="lock_spinbutton" type="label-for"/>
+ <relation target="lock_spinbutton" type="flows-to"/>
+ </accessibility>
+ <signal handler="pref_changed_cb" name="toggled"/>
+ <child internal-child="accessible">
+ <object class="AtkObject" id="a11y-lock_button1">
+ <property name="AtkObject::accessible-name" translatable="yes">Lock Screen</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="right-attach">2</property>
+ <property name="top-attach">2</property>
+ <property name="bottom-attach">3</property>
+ <property name="x-options">fill</property>
+ <property name="y-options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="timeout_spinbutton">
+ <property name="visible">True</property>
+ <property name="tooltip-text" translatable="yes">How long before the screen saver activates.</property>
+ <property name="can-focus">True</property>
+ <property name="climb-rate">15</property>
+ <property name="digits">0</property>
+ <property name="numeric">True</property>
+ <property name="update-policy">GTK_UPDATE_ALWAYS</property>
+ <property name="snap-to-ticks">True</property>
+ <property name="wrap">False</property>
+ <property name="adjustment">adjustment1</property>
+ <accessibility>
+ <relation target="timeout_label" type="labelled-by"/>
+ <relation target="timeout_mlabel" type="labelled-by"/>
+ <relation target="timeout_label" type="flows-from"/>
+ <relation target="timeout_mlabel" type="flows-to"/>
+ </accessibility>
+ <signal handler="pref_changed_cb" name="activate"/>
+ <signal handler="pref_changed_event_cb" name="focus_out_event"/>
+ <signal handler="pref_changed_cb" name="value_changed"/>
+ </object>
+ <packing>
+ <property name="left-attach">2</property>
+ <property name="right-attach">3</property>
+ <property name="top-attach">0</property>
+ <property name="bottom-attach">1</property>
+ <property name="x-options">fill</property>
+ <property name="y-options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="lock_spinbutton">
+ <property name="visible">True</property>
+ <property name="tooltip-text" translatable="yes">How long after the screen blanks until a password will be required.</property>
+ <property name="can-focus">True</property>
+ <property name="climb-rate">15</property>
+ <property name="digits">0</property>
+ <property name="numeric">True</property>
+ <property name="update-policy">GTK_UPDATE_ALWAYS</property>
+ <property name="snap-to-ticks">True</property>
+ <property name="wrap">False</property>
+ <property name="adjustment">adjustment2</property>
+ <accessibility>
+ <relation target="lock_button" type="controlled-by"/>
+ <relation target="lock_button" type="labelled-by"/>
+ <relation target="lock_mlabel" type="labelled-by"/>
+ <relation target="lock_button" type="flows-from"/>
+ <relation target="lock_mlabel" type="flows-to"/>
+ </accessibility>
+ <signal handler="pref_changed_cb" name="activate"/>
+ <signal handler="pref_changed_event_cb" name="focus_out_event"/>
+ <signal handler="pref_changed_cb" name="value_changed"/>
+ <child internal-child="accessible">
+ <object class="AtkObject" id="a11y-lock_spinbutton1">
+ <property name="AtkObject::accessible-name" translatable="yes">Lock Screen After</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">2</property>
+ <property name="right-attach">3</property>
+ <property name="top-attach">2</property>
+ <property name="bottom-attach">3</property>
+ <property name="y-padding">10</property>
+ <property name="x-options">fill</property>
+ <property name="y-options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="cycle_spinbutton">
+ <property name="visible">True</property>
+ <property name="tooltip-text" translatable="yes">How long each display mode should run before choosing a new one (in Random mode.)</property>
+ <property name="can-focus">True</property>
+ <property name="climb-rate">15</property>
+ <property name="digits">0</property>
+ <property name="numeric">True</property>
+ <property name="update-policy">GTK_UPDATE_ALWAYS</property>
+ <property name="snap-to-ticks">True</property>
+ <property name="wrap">False</property>
+ <property name="adjustment">adjustment3</property>
+ <accessibility>
+ <relation target="cycle_label" type="labelled-by"/>
+ <relation target="cycle_mlabel" type="labelled-by"/>
+ <relation target="cycle_label" type="flows-from"/>
+ <relation target="cycle_mlabel" type="flows-to"/>
+ </accessibility>
+ <signal handler="pref_changed_cb" name="activate"/>
+ <signal handler="pref_changed_event_cb" name="focus_out_event"/>
+ <signal handler="pref_changed_cb" name="value_changed"/>
+ </object>
+ <packing>
+ <property name="left-attach">2</property>
+ <property name="right-attach">3</property>
+ <property name="top-attach">1</property>
+ <property name="bottom-attach">2</property>
+ <property name="x-options">fill</property>
+ <property name="y-options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="lock_mlabel">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">minutes</property>
+ <property name="use-underline">False</property>
+ <property name="use-markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">8</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width-chars">-1</property>
+ <property name="single-line-mode">False</property>
+ <property name="angle">0</property>
+ <accessibility>
+ <relation target="lock_spinbutton" type="label-for"/>
+ <relation target="lock_spinbutton" type="flows-to"/>
+ </accessibility>
+ </object>
+ <packing>
+ <property name="left-attach">3</property>
+ <property name="right-attach">4</property>
+ <property name="top-attach">2</property>
+ <property name="bottom-attach">3</property>
+ <property name="y-options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="cycle_mlabel">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">minutes</property>
+ <property name="use-underline">False</property>
+ <property name="use-markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">8</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width-chars">-1</property>
+ <property name="single-line-mode">False</property>
+ <property name="angle">0</property>
+ <accessibility>
+ <relation target="cycle_spinbutton" type="label-for"/>
+ <relation target="cycle_spinbutton" type="flows-from"/>
+ </accessibility>
+ </object>
+ <packing>
+ <property name="left-attach">3</property>
+ <property name="right-attach">4</property>
+ <property name="top-attach">1</property>
+ <property name="bottom-attach">2</property>
+ <property name="y-options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="timeout_label">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Blank After</property>
+ <property name="use-underline">True</property>
+ <property name="use-markup">False</property>
+ <property name="justify">GTK_JUSTIFY_RIGHT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">1</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">8</property>
+ <property name="ypad">0</property>
+ <property name="mnemonic-widget">timeout_spinbutton</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width-chars">-1</property>
+ <property name="single-line-mode">False</property>
+ <property name="angle">0</property>
+ <accessibility>
+ <relation target="timeout_spinbutton" type="label-for"/>
+ <relation target="timeout_spinbutton" type="flows-to"/>
+ </accessibility>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="right-attach">2</property>
+ <property name="top-attach">0</property>
+ <property name="bottom-attach">1</property>
+ <property name="x-options">fill</property>
+ <property name="y-options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="timeout_mlabel">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">minutes</property>
+ <property name="use-underline">False</property>
+ <property name="use-markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">8</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width-chars">-1</property>
+ <property name="single-line-mode">False</property>
+ <property name="angle">0</property>
+ <accessibility>
+ <relation target="timeout_spinbutton" type="label-for"/>
+ <relation target="timeout_spinbutton" type="flows-from"/>
+ </accessibility>
+ </object>
+ <packing>
+ <property name="left-attach">3</property>
+ <property name="right-attach">4</property>
+ <property name="top-attach">0</property>
+ <property name="bottom-attach">1</property>
+ <property name="y-options"/>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="right-attach">1</property>
+ <property name="top-attach">1</property>
+ <property name="bottom-attach">2</property>
+ <property name="x-options">fill</property>
+ <property name="y-options">fill</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHButtonBox" id="demo_manual_hbbox">
+ <property name="visible">True</property>
+ <property name="layout-style">GTK_BUTTONBOX_SPREAD</property>
+ <property name="spacing">30</property>
+ <child>
+ <object class="GtkButton" id="demo">
+ <property name="visible">True</property>
+ <property name="tooltip-text" translatable="yes">Demo the selected screen saver in full-screen mode (click the mouse to return.)</property>
+ <property name="can-default">True</property>
+ <property name="can-focus">True</property>
+ <property name="label" translatable="yes">_Preview</property>
+ <property name="use-underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus-on-click">True</property>
+ <signal handler="run_this_cb" name="clicked"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="settings">
+ <property name="visible">True</property>
+ <property name="tooltip-text" translatable="yes">Customization and explanation of the selected screen saver.</property>
+ <property name="can-default">True</property>
+ <property name="can-focus">True</property>
+ <property name="label" translatable="yes">_Settings...</property>
+ <property name="use-underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus-on-click">True</property>
+ <signal handler="settings_cb" name="clicked"/>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="right-attach">2</property>
+ <property name="top-attach">1</property>
+ <property name="bottom-attach">2</property>
+ <property name="x-options">fill</property>
+ <property name="y-options">fill</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="list_vbox">
+ <property name="border-width">10</property>
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkBox" id="mode_hbox">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+ <property name="orientation">horizontal</property>
+ <child>
+ <object class="GtkLabel" id="mode_label">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Mode:</property>
+ <property name="use-underline">True</property>
+ <property name="use-markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="mnemonic-widget">mode_menu</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width-chars">-1</property>
+ <property name="single-line-mode">False</property>
+ <property name="angle">0</property>
+ <accessibility>
+ <relation target="mode_menu" type="label-for"/>
+ </accessibility>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBox" id="mode_menu">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="has-entry">False</property>
+ <property name="model">mode_menu_model</property>
+ <signal handler="mode_menu_item_cb" name="changed"/>
+ <accessibility>
+ <relation target="mode_label" type="labelled-by"/>
+ </accessibility>
+ <child>
+ <object class="GtkCellRendererText" id="renderer1"/>
+ <attributes>
+ <attribute name="text">0</attribute>
+ </attributes>
+ </child>
+ </object>
+ <packing>
+ <property name="padding">4</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="padding">10</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkScrolledWindow" id="scroller">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="hscrollbar-policy">GTK_POLICY_NEVER</property>
+ <property name="vscrollbar-policy">GTK_POLICY_ALWAYS</property>
+ <property name="shadow-type">GTK_SHADOW_IN</property>
+ <property name="window-placement">GTK_CORNER_TOP_LEFT</property>
+ <child>
+ <object class="GtkTreeView" id="list">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="headers-visible">False</property>
+ <property name="rules-hint">True</property>
+ <property name="reorderable">False</property>
+ <property name="enable-search">True</property>
+ <property name="fixed-height-mode">False</property>
+ <property name="hover-selection">False</property>
+ <property name="hover-expand">False</property>
+ <property name="search-column">1</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="centering_hbox">
+ <property name="visible">True</property>
+ <property name="homogeneous">True</property>
+ <property name="spacing">0</property>
+ <property name="orientation">horizontal</property>
+ <child>
+ <object class="GtkBox" id="next_prev_hbox">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+ <property name="orientation">horizontal</property>
+ <child>
+ <object class="GtkButton" id="next">
+ <property name="visible">True</property>
+ <property name="tooltip-text" translatable="yes">Run the next screen saver in the list in full-screen mode (click the mouse to return.)</property>
+ <property name="can-focus">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus-on-click">True</property>
+ <signal handler="run_next_cb" name="clicked"/>
+ <child>
+ <object class="GtkArrow" id="arrow1">
+ <property name="visible">True</property>
+ <property name="arrow-type">GTK_ARROW_DOWN</property>
+ <property name="shadow-type">GTK_SHADOW_OUT</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="prev">
+ <property name="visible">True</property>
+ <property name="tooltip-text" translatable="yes">Run the previous screen saver in the list in full-screen mode (click the mouse to return.)</property>
+ <property name="can-focus">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus-on-click">True</property>
+ <signal handler="run_prev_cb" name="clicked"/>
+ <child>
+ <object class="GtkArrow" id="arrow2">
+ <property name="visible">True</property>
+ <property name="arrow-type">GTK_ARROW_UP</property>
+ <property name="shadow-type">GTK_SHADOW_OUT</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack-type">GTK_PACK_END</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="right-attach">1</property>
+ <property name="top-attach">0</property>
+ <property name="bottom-attach">1</property>
+ <property name="x-options">fill</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="preview_frame">
+ <property name="visible">True</property>
+ <property name="label-xalign">0</property>
+ <property name="label-yalign">0.5</property>
+ <property name="shadow-type">GTK_SHADOW_ETCHED_IN</property>
+ <accessibility>
+ <relation target="label1" type="labelled-by"/>
+ </accessibility>
+ <child>
+ <object class="GtkBox" id="preview_vbox">
+ <property name="border-width">5</property>
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">5</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkNotebook" id="preview_notebook">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="show-tabs">False</property>
+ <property name="show-border">False</property>
+ <property name="tab-pos">GTK_POS_BOTTOM</property>
+ <property name="scrollable">False</property>
+ <property name="enable-popup">False</property>
+
+ <child>
+ <object class="GtkAspectFrame" id="preview_aspectframe">
+ <property name="border-width">8</property>
+ <property name="visible">True</property>
+ <property name="label-xalign">0</property>
+ <property name="label-yalign">0.5</property>
+ <property name="shadow-type">GTK_SHADOW_ETCHED_IN</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="ratio">1.777777</property>
+ <property name="obey-child">False</property>
+ <child>
+ <object class="GtkDrawingArea" id="preview">
+ <property name="visible">True</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="tab-expand">False</property>
+ <property name="tab-fill">False</property>
+ </packing>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="preview_tab">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Preview</property>
+ <property name="use-underline">False</property>
+ <property name="use-markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width-chars">-1</property>
+ <property name="single-line-mode">False</property>
+ <property name="angle">0</property>
+ </object>
+ <packing>
+ <property name="tab-expand">False</property>
+ <property name="tab-fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <object class="GtkLabel" id="no_preview_label">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">No Preview
+Available</property>
+ <property name="use-underline">False</property>
+ <property name="use-markup">False</property>
+ <property name="justify">GTK_JUSTIFY_CENTER</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width-chars">-1</property>
+ <property name="single-line-mode">False</property>
+ <property name="angle">0</property>
+ </object>
+ <packing>
+ <property name="tab-expand">False</property>
+ <property name="tab-fill">False</property>
+ </packing>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="no_preview_tab">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">No Preview</property>
+ <property name="use-underline">False</property>
+ <property name="use-markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width-chars">-1</property>
+ <property name="single-line-mode">False</property>
+ <property name="angle">0</property>
+ </object>
+ <packing>
+ <property name="tab-expand">False</property>
+ <property name="tab-fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <object class="GtkLabel" id="not_installed_label">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Not
+Installed</property>
+ <property name="use-underline">False</property>
+ <property name="use-markup">False</property>
+ <property name="justify">GTK_JUSTIFY_CENTER</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width-chars">-1</property>
+ <property name="single-line-mode">False</property>
+ <property name="angle">0</property>
+ </object>
+ <packing>
+ <property name="tab-expand">False</property>
+ <property name="tab-fill">False</property>
+ </packing>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="not_installed_tab">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Not Installed</property>
+ <property name="use-underline">False</property>
+ <property name="use-markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width-chars">-1</property>
+ <property name="single-line-mode">False</property>
+ <property name="angle">0</property>
+ </object>
+ <packing>
+ <property name="tab-expand">False</property>
+ <property name="tab-fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <object class="GtkLabel" id="nothing_label">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Very few (or no) screen savers appear to be available.
+
+This probably means that the "xscreensaver-extras" and
+"xscreensaver-gl-extras" packages are not installed.</property>
+ <property name="use-underline">False</property>
+ <property name="use-markup">False</property>
+ <property name="justify">GTK_JUSTIFY_CENTER</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width-chars">-1</property>
+ <property name="single-line-mode">False</property>
+ <property name="angle">0</property>
+ </object>
+ <packing>
+ <property name="tab-expand">False</property>
+ <property name="tab-fill">False</property>
+ </packing>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="nothing_tab">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Nothing Installed</property>
+ <property name="use-underline">False</property>
+ <property name="use-markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width-chars">-1</property>
+ <property name="single-line-mode">False</property>
+ <property name="angle">0</property>
+ </object>
+ <packing>
+ <property name="tab-expand">False</property>
+ <property name="tab-fill">False</property>
+ </packing>
+ <packing>
+ <property name="tab-expand">False</property>
+ <property name="tab-fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <object class="GtkLabel" id="wayland_label">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">No Previews Available
+Under Wayland.</property>
+ <property name="use-underline">False</property>
+ <property name="use-markup">False</property>
+ <property name="justify">GTK_JUSTIFY_CENTER</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width-chars">-1</property>
+ <property name="single-line-mode">False</property>
+ <property name="angle">0</property>
+ </object>
+ <packing>
+ <property name="tab-expand">False</property>
+ <property name="tab-fill">False</property>
+ </packing>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="wayland_tab">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">No Previews Under Wayland</property>
+ <property name="use-underline">False</property>
+ <property name="use-markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width-chars">-1</property>
+ <property name="single-line-mode">False</property>
+ <property name="angle">0</property>
+ </object>
+ <packing>
+ <property name="tab-expand">False</property>
+ <property name="tab-fill">False</property>
+ </packing>
+ <packing>
+ <property name="tab-expand">False</property>
+ <property name="tab-fill">False</property>
+ </packing>
+ </child>
+
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <object class="GtkLabel" id="short_preview_label">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes"></property>
+ <property name="use-underline">False</property>
+ <property name="use-markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">True</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.0</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width-chars">72</property>
+ <property name="single-line-mode">False</property>
+ <property name="angle">0</property>
+ <accessibility>
+ <relation target="preview_aspectframe" type="label-for"/>
+ </accessibility>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <object class="GtkLabel" id="preview_author_label">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes"></property>
+ <property name="use-underline">False</property>
+ <property name="use-markup">False</property>
+ <property name="justify">GTK_JUSTIFY_CENTER</property>
+ <property name="wrap">True</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.0</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width-chars">72</property>
+ <property name="single-line-mode">False</property>
+ <property name="angle">0</property>
+ <accessibility>
+ <relation target="preview_aspectframe" type="label-for"/>
+ </accessibility>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label1">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Description</property>
+ <property name="use-underline">False</property>
+ <property name="use-markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width-chars">-1</property>
+ <property name="single-line-mode">False</property>
+ <property name="angle">0</property>
+ <accessibility>
+ <relation target="preview_frame" type="label-for"/>
+ </accessibility>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="right-attach">2</property>
+ <property name="top-attach">0</property>
+ <property name="bottom-attach">1</property>
+ <property name="y-padding">6</property>
+ <property name="x-options">expand|shrink|fill</property>
+ <property name="y-options">expand|shrink|fill</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="tab-expand">False</property>
+ <property name="tab-fill">False</property>
+ </packing>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="demo_tab">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Display Modes</property>
+ <property name="use-underline">True</property>
+ <property name="use-markup">False</property>
+ <property name="justify">GTK_JUSTIFY_CENTER</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="mnemonic-widget">notebook</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width-chars">-1</property>
+ <property name="single-line-mode">False</property>
+ <property name="angle">0</property>
+ </object>
+ <packing>
+ <property name="tab-expand">False</property>
+ <property name="tab-fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkTable" id="options_table">
+ <property name="visible">True</property>
+ <property name="n-rows">2</property>
+ <property name="n-columns">2</property>
+ <property name="homogeneous">True</property>
+ <property name="row-spacing">0</property>
+ <property name="column-spacing">0</property>
+ <child>
+ <object class="GtkFrame" id="grab_frame">
+ <property name="border-width">10</property>
+ <property name="visible">True</property>
+ <property name="label-xalign">0</property>
+ <property name="label-yalign">0.5</property>
+ <property name="shadow-type">GTK_SHADOW_ETCHED_IN</property>
+ <accessibility>
+ <relation target="label2" type="labelled-by"/>
+ </accessibility>
+ <child>
+ <object class="GtkBox" id="grab_hbox">
+ <property name="border-width">8</property>
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">8</property>
+ <property name="orientation">horizontal</property>
+ <child>
+ <object class="GtkBox" id="grab_vbox">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkCheckButton" id="grab_desk_button">
+ <property name="visible">True</property>
+ <property name="tooltip-text" translatable="yes">Whether the image-manipulating modes should be allowed to operate on an image of your desktop.</property>
+ <property name="can-focus">True</property>
+ <property name="label" translatable="yes">Grab Desktop _Images</property>
+ <property name="use-underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus-on-click">True</property>
+ <property name="active">False</property>
+ <property name="inconsistent">False</property>
+ <property name="draw-indicator">True</property>
+ <signal handler="pref_changed_cb" name="toggled"/>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="grab_video_button">
+ <property name="visible">True</property>
+ <property name="tooltip-text" translatable="yes">Whether the image-manipulating modes should operate on images captured from the system's video input (if there is one.)</property>
+ <property name="can-focus">True</property>
+ <property name="label" translatable="yes">Grab _Video Frames</property>
+ <property name="use-underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus-on-click">True</property>
+ <property name="active">False</property>
+ <property name="inconsistent">False</property>
+ <property name="draw-indicator">True</property>
+ <signal handler="pref_changed_cb" name="toggled"/>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="grab_image_button">
+ <property name="visible">True</property>
+ <property name="tooltip-text" translatable="yes">Whether the image-manipulating modes should load image files.</property>
+ <property name="can-focus">True</property>
+ <property name="label" translatable="yes">Choose _Random Image:</property>
+ <property name="use-underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus-on-click">True</property>
+ <property name="active">False</property>
+ <property name="inconsistent">False</property>
+ <property name="draw-indicator">True</property>
+ <accessibility>
+ <relation target="image_text" type="controller-for"/>
+ <relation target="image_browse_button" type="controller-for"/>
+ </accessibility>
+ <signal handler="pref_changed_cb" name="toggled"/>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="image_hbox">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+ <property name="orientation">horizontal</property>
+ <child>
+ <object class="GtkLabel" id="grab_dummy">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes"/>
+ <property name="use-underline">False</property>
+ <property name="use-markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">8</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width-chars">-1</property>
+ <property name="single-line-mode">False</property>
+ <property name="angle">0</property>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="image_text">
+ <property name="visible">True</property>
+ <property name="tooltip-text" translatable="yes">The local directory, RSS feed or Atom feed from which images will be randomly chosen.</property>
+ <property name="can-focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max-length">0</property>
+ <property name="text" translatable="yes"/>
+ <property name="has-frame">True</property>
+ <property name="invisible-char">*</property>
+ <property name="activates-default">False</property>
+ <accessibility>
+ <relation target="grab_image_button" type="labelled-by"/>
+ <relation target="grab_image_button" type="controlled-by"/>
+ </accessibility>
+ <signal handler="pref_changed_cb" name="activate"/>
+ <signal handler="image_text_pref_changed_event_cb" name="focus_out_event"/>
+ </object>
+ <packing>
+ <property name="padding">2</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="image_browse_button">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="label" translatable="yes">_Browse</property>
+ <property name="use-underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus-on-click">True</property>
+ <signal handler="browse_image_dir_cb" name="clicked"/>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label8">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Local directory, or URL of RSS or Atom feed.</property>
+ <property name="use-underline">False</property>
+ <property name="use-markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">20</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width-chars">-1</property>
+ <property name="single-line-mode">False</property>
+ <property name="angle">0</property>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label2">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Image Manipulation</property>
+ <property name="use-underline">False</property>
+ <property name="use-markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width-chars">-1</property>
+ <property name="single-line-mode">False</property>
+ <property name="angle">0</property>
+ <accessibility>
+ <relation target="grab_frame" type="label-for"/>
+ </accessibility>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="right-attach">1</property>
+ <property name="top-attach">0</property>
+ <property name="bottom-attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="diag_frame">
+ <property name="border-width">10</property>
+ <property name="visible">True</property>
+ <property name="label-xalign">0</property>
+ <property name="label-yalign">0.5</property>
+ <property name="shadow-type">GTK_SHADOW_ETCHED_IN</property>
+ <accessibility>
+ <relation target="label3" type="labelled-by"/>
+ </accessibility>
+ <child>
+ <object class="GtkBox" id="diag_hbox">
+ <property name="border-width">8</property>
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">8</property>
+ <property name="orientation">horizontal</property>
+ <child>
+ <object class="GtkTable" id="text_table">
+ <property name="visible">True</property>
+ <property name="n-rows">5</property>
+ <property name="n-columns">3</property>
+ <property name="homogeneous">False</property>
+ <property name="row-spacing">2</property>
+ <property name="column-spacing">2</property>
+ <child>
+ <object class="GtkRadioButton" id="text_radio">
+ <property name="visible">True</property>
+ <property name="tooltip-text" translatable="yes">Text-displaying modes will display the text typed here.</property>
+ <property name="can-focus">True</property>
+ <property name="label" translatable="yes">_Text</property>
+ <property name="use-underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus-on-click">True</property>
+ <property name="active">False</property>
+ <property name="inconsistent">False</property>
+ <property name="draw-indicator">True</property>
+ <accessibility>
+ <relation target="text_entry" type="controller-for"/>
+ <relation target="text_entry" type="label-for"/>
+ </accessibility>
+ <signal handler="pref_changed_cb" name="toggled"/>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="right-attach">1</property>
+ <property name="top-attach">1</property>
+ <property name="bottom-attach">2</property>
+ <property name="x-options">fill</property>
+ <property name="y-options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkRadioButton" id="text_file_radio">
+ <property name="visible">True</property>
+ <property name="tooltip-text" translatable="yes">Text-displaying modes will display the contents of this file.</property>
+ <property name="can-focus">True</property>
+ <property name="label" translatable="yes">Text _file</property>
+ <property name="use-underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus-on-click">True</property>
+ <property name="active">False</property>
+ <property name="inconsistent">False</property>
+ <property name="draw-indicator">True</property>
+ <property name="group">text_radio</property>
+ <accessibility>
+ <relation target="text_file_entry" type="label-for"/>
+ <relation target="text_file_entry" type="controller-for"/>
+ </accessibility>
+ <signal handler="pref_changed_cb" name="toggled"/>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="right-attach">1</property>
+ <property name="top-attach">2</property>
+ <property name="bottom-attach">3</property>
+ <property name="x-options">fill</property>
+ <property name="y-options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkRadioButton" id="text_program_radio">
+ <property name="visible">True</property>
+ <property name="tooltip-text" translatable="yes">Text-displaying modes will display the output of this program.</property>
+ <property name="can-focus">True</property>
+ <property name="label" translatable="yes">_Program</property>
+ <property name="use-underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus-on-click">True</property>
+ <property name="active">False</property>
+ <property name="inconsistent">False</property>
+ <property name="draw-indicator">True</property>
+ <property name="group">text_radio</property>
+ <accessibility>
+ <relation target="text_program_entry" type="label-for"/>
+ <relation target="text_program_entry" type="controller-for"/>
+ <relation target="text_program_browse" type="controller-for"/>
+ </accessibility>
+ <signal handler="pref_changed_cb" name="toggled"/>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="right-attach">1</property>
+ <property name="top-attach">3</property>
+ <property name="bottom-attach">4</property>
+ <property name="x-options">fill</property>
+ <property name="y-options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkRadioButton" id="text_url_radio">
+ <property name="visible">True</property>
+ <property name="tooltip-text" translatable="yes">Text-displaying modes will display the contents of this URL (HTML or RSS).</property>
+ <property name="can-focus">True</property>
+ <property name="label" translatable="yes">_URL</property>
+ <property name="use-underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus-on-click">True</property>
+ <property name="active">False</property>
+ <property name="inconsistent">False</property>
+ <property name="draw-indicator">True</property>
+ <property name="group">text_radio</property>
+ <accessibility>
+ <relation target="text_url_entry" type="label-for"/>
+ <relation target="text_url_entry" type="controller-for"/>
+ </accessibility>
+ <signal handler="pref_changed_cb" name="toggled"/>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="right-attach">1</property>
+ <property name="top-attach">4</property>
+ <property name="bottom-attach">5</property>
+ <property name="x-options">fill</property>
+ <property name="y-options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkRadioButton" id="text_host_radio">
+ <property name="visible">True</property>
+ <property name="tooltip-text" translatable="yes">Text-displaying modes will display the local host name, date, and time.</property>
+ <property name="can-focus">True</property>
+ <property name="label" translatable="yes">_Host Name and Time</property>
+ <property name="use-underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus-on-click">True</property>
+ <property name="active">True</property>
+ <property name="inconsistent">False</property>
+ <property name="draw-indicator">True</property>
+ <property name="group">text_radio</property>
+ <signal handler="pref_changed_cb" name="toggled"/>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="right-attach">3</property>
+ <property name="top-attach">0</property>
+ <property name="bottom-attach">1</property>
+ <property name="x-options">fill</property>
+ <property name="y-options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="text_url_entry">
+ <property name="visible">True</property>
+ <property name="tooltip-text" translatable="yes">Text-displaying modes will display the contents of this URL (HTML or RSS).</property>
+ <property name="can-focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max-length">0</property>
+ <property name="text" translatable="yes"/>
+ <property name="has-frame">True</property>
+ <property name="invisible-char">*</property>
+ <property name="activates-default">False</property>
+ <accessibility>
+ <relation target="text_url_radio" type="controlled-by"/>
+ </accessibility>
+ <signal handler="pref_changed_cb" name="activate"/>
+ <signal handler="pref_changed_event_cb" name="focus_out_event"/>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="right-attach">3</property>
+ <property name="top-attach">4</property>
+ <property name="bottom-attach">5</property>
+ <property name="y-options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="text_file_browse">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="label" translatable="yes">_Browse</property>
+ <property name="use-underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus-on-click">True</property>
+ <accessibility>
+ <relation target="text_file_radio" type="controlled-by"/>
+ </accessibility>
+ <signal handler="browse_text_file_cb" name="clicked"/>
+ </object>
+ <packing>
+ <property name="left-attach">2</property>
+ <property name="right-attach">3</property>
+ <property name="top-attach">2</property>
+ <property name="bottom-attach">3</property>
+ <property name="x-options">fill</property>
+ <property name="y-options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="text_entry">
+ <property name="visible">True</property>
+ <property name="tooltip-text" translatable="yes">Text-displaying modes will display the text typed here.</property>
+ <property name="can-focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max-length">0</property>
+ <property name="text" translatable="yes"/>
+ <property name="has-frame">True</property>
+ <property name="invisible-char">*</property>
+ <property name="activates-default">False</property>
+ <accessibility>
+ <relation target="text_program_radio" type="labelled-by"/>
+ <relation target="text_program_radio" type="controlled-by"/>
+ </accessibility>
+ <signal handler="pref_changed_cb" name="activate"/>
+ <signal handler="pref_changed_event_cb" name="focus_out_event"/>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="right-attach">3</property>
+ <property name="top-attach">1</property>
+ <property name="bottom-attach">2</property>
+ <property name="y-options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="text_program_entry">
+ <property name="visible">True</property>
+ <property name="tooltip-text" translatable="yes">Text-displaying modes will display the output of this program.</property>
+ <property name="can-focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max-length">0</property>
+ <property name="text" translatable="yes"/>
+ <property name="has-frame">True</property>
+ <property name="invisible-char">*</property>
+ <property name="activates-default">False</property>
+ <accessibility>
+ <relation target="text_program_radio" type="labelled-by"/>
+ <relation target="text_program_radio" type="controlled-by"/>
+ </accessibility>
+ <signal handler="pref_changed_cb" name="activate"/>
+ <signal handler="pref_changed_event_cb" name="focus_out_event"/>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="right-attach">2</property>
+ <property name="top-attach">3</property>
+ <property name="bottom-attach">4</property>
+ <property name="y-options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="text_program_browse">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="label" translatable="yes">_Browse</property>
+ <property name="use-underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus-on-click">True</property>
+ <accessibility>
+ <relation target="text_program_radio" type="controller-for"/>
+ </accessibility>
+ <signal handler="browse_text_program_cb" name="clicked"/>
+ </object>
+ <packing>
+ <property name="left-attach">2</property>
+ <property name="right-attach">3</property>
+ <property name="top-attach">3</property>
+ <property name="bottom-attach">4</property>
+ <property name="x-options">fill</property>
+ <property name="y-options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="text_file_entry">
+ <property name="visible">True</property>
+ <property name="tooltip-text" translatable="yes">Text-displaying modes will display the contents of this file.</property>
+ <property name="can-focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max-length">0</property>
+ <property name="text" translatable="yes"/>
+ <property name="has-frame">True</property>
+ <property name="invisible-char">*</property>
+ <property name="activates-default">False</property>
+ <accessibility>
+ <relation target="text_file_radio" type="labelled-by"/>
+ <relation target="text_file_radio" type="controlled-by"/>
+ </accessibility>
+ <signal handler="pref_changed_cb" name="activate"/>
+ <signal handler="pref_changed_event_cb" name="focus_out_event"/>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="right-attach">2</property>
+ <property name="top-attach">2</property>
+ <property name="bottom-attach">3</property>
+ <property name="y-options"/>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label3">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Text Manipulation</property>
+ <property name="use-underline">False</property>
+ <property name="use-markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width-chars">-1</property>
+ <property name="single-line-mode">False</property>
+ <property name="angle">0</property>
+ <accessibility>
+ <relation target="diag_frame" type="label-for"/>
+ </accessibility>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="right-attach">1</property>
+ <property name="top-attach">1</property>
+ <property name="bottom-attach">2</property>
+ <property name="x-options">fill</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="dpms_frame">
+ <property name="border-width">10</property>
+ <property name="visible">True</property>
+ <property name="label-xalign">0</property>
+ <property name="label-yalign">0.5</property>
+ <property name="shadow-type">GTK_SHADOW_ETCHED_IN</property>
+ <child>
+ <object class="GtkBox" id="dpms_hbox">
+ <property name="border-width">8</property>
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">8</property>
+ <property name="orientation">horizontal</property>
+ <child>
+ <object class="GtkBox" id="vbox6">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkCheckButton" id="dpms_button">
+ <property name="visible">True</property>
+ <property name="tooltip-text" translatable="yes">Whether the monitor should be powered down after a while.</property>
+ <property name="can-focus">True</property>
+ <property name="label" translatable="yes">_Power Management Enabled</property>
+ <property name="use-underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus-on-click">True</property>
+ <property name="active">True</property>
+ <property name="inconsistent">False</property>
+ <property name="draw-indicator">True</property>
+ <accessibility>
+ <relation target="dpms_suspend_spinbutton" type="controller-for"/>
+ <relation target="dpms_standby_spinbutton" type="controller-for"/>
+ <relation target="dpms_off_spinbutton" type="controller-for"/>
+ </accessibility>
+ <signal handler="pref_changed_cb" name="toggled"/>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkTable" id="dpms_table">
+ <property name="visible">True</property>
+ <property name="n-rows">3</property>
+ <property name="n-columns">3</property>
+ <property name="homogeneous">False</property>
+ <property name="row-spacing">2</property>
+ <property name="column-spacing">4</property>
+ <child>
+ <object class="GtkLabel" id="dpms_standby_label">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Stand_by After</property>
+ <property name="use-underline">True</property>
+ <property name="use-markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">1</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">10</property>
+ <property name="ypad">0</property>
+ <property name="mnemonic-widget">dpms_standby_spinbutton</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width-chars">-1</property>
+ <property name="single-line-mode">False</property>
+ <property name="angle">0</property>
+ <accessibility>
+ <relation target="dpms_standby_spinbutton" type="label-for"/>
+ <relation target="dpms_standby_spinbutton" type="flows-to"/>
+ </accessibility>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="right-attach">1</property>
+ <property name="top-attach">0</property>
+ <property name="bottom-attach">1</property>
+ <property name="x-options">fill</property>
+ <property name="y-options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="dpms_suspend_label">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Sus_pend After</property>
+ <property name="use-underline">True</property>
+ <property name="use-markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">1</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">10</property>
+ <property name="ypad">0</property>
+ <property name="mnemonic-widget">dpms_suspend_spinbutton</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width-chars">-1</property>
+ <property name="single-line-mode">False</property>
+ <property name="angle">0</property>
+ <accessibility>
+ <relation target="dpms_suspend_spinbutton" type="label-for"/>
+ <relation target="dpms_suspend_spinbutton" type="flows-to"/>
+ </accessibility>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="right-attach">1</property>
+ <property name="top-attach">1</property>
+ <property name="bottom-attach">2</property>
+ <property name="x-options">fill</property>
+ <property name="y-options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="dpms_off_label">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Off After</property>
+ <property name="use-underline">True</property>
+ <property name="use-markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">1</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">10</property>
+ <property name="ypad">0</property>
+ <property name="mnemonic-widget">dpms_off_spinbutton</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width-chars">-1</property>
+ <property name="single-line-mode">False</property>
+ <property name="angle">0</property>
+ <accessibility>
+ <relation target="dpms_off_spinbutton" type="label-for"/>
+ <relation target="dpms_off_spinbutton" type="flows-to"/>
+ </accessibility>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="right-attach">1</property>
+ <property name="top-attach">2</property>
+ <property name="bottom-attach">3</property>
+ <property name="x-options">fill</property>
+ <property name="y-options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="dpms_standby_mlabel">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">minutes</property>
+ <property name="use-underline">False</property>
+ <property name="use-markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width-chars">-1</property>
+ <property name="single-line-mode">False</property>
+ <property name="angle">0</property>
+ <accessibility>
+ <relation target="dpms_standby_spinbutton" type="label-for"/>
+ <relation target="dpms_standby_spinbutton" type="flows-from"/>
+ </accessibility>
+ </object>
+ <packing>
+ <property name="left-attach">2</property>
+ <property name="right-attach">3</property>
+ <property name="top-attach">0</property>
+ <property name="bottom-attach">1</property>
+ <property name="x-options">fill</property>
+ <property name="y-options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="dpms_suspend_mlabel">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">minutes</property>
+ <property name="use-underline">False</property>
+ <property name="use-markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width-chars">-1</property>
+ <property name="single-line-mode">False</property>
+ <property name="angle">0</property>
+ <accessibility>
+ <relation target="dpms_suspend_spinbutton" type="label-for"/>
+ <relation target="dpms_suspend_spinbutton" type="flows-from"/>
+ </accessibility>
+ </object>
+ <packing>
+ <property name="left-attach">2</property>
+ <property name="right-attach">3</property>
+ <property name="top-attach">1</property>
+ <property name="bottom-attach">2</property>
+ <property name="x-options">fill</property>
+ <property name="y-options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="dpms_off_mlabel">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">minutes</property>
+ <property name="use-underline">False</property>
+ <property name="use-markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width-chars">-1</property>
+ <property name="single-line-mode">False</property>
+ <property name="angle">0</property>
+ <accessibility>
+ <relation target="dpms_off_spinbutton" type="label-for"/>
+ <relation target="dpms_off_spinbutton" type="flows-from"/>
+ </accessibility>
+ </object>
+ <packing>
+ <property name="left-attach">2</property>
+ <property name="right-attach">3</property>
+ <property name="top-attach">2</property>
+ <property name="bottom-attach">3</property>
+ <property name="x-options">fill</property>
+ <property name="y-options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="dpms_off_spinbutton">
+ <property name="visible">True</property>
+ <property name="tooltip-text" translatable="yes">How long until the monitor powers down.</property>
+ <property name="can-focus">True</property>
+ <property name="climb-rate">15</property>
+ <property name="digits">0</property>
+ <property name="numeric">True</property>
+ <property name="update-policy">GTK_UPDATE_ALWAYS</property>
+ <property name="snap-to-ticks">True</property>
+ <property name="wrap">False</property>
+ <property name="adjustment">adjustment4</property>
+ <accessibility>
+ <relation target="dpms_button" type="controlled-by"/>
+ <relation target="dpms_off_label" type="labelled-by"/>
+ <relation target="dpms_off_mlabel" type="labelled-by"/>
+ <relation target="dpms_off_label" type="flows-from"/>
+ <relation target="dpms_off_mlabel" type="flows-to"/>
+ </accessibility>
+ <signal handler="pref_changed_cb" name="activate"/>
+ <signal handler="pref_changed_event_cb" name="focus_out_event"/>
+ <signal handler="pref_changed_cb" name="value_changed"/>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="right-attach">2</property>
+ <property name="top-attach">2</property>
+ <property name="bottom-attach">3</property>
+ <property name="x-options"/>
+ <property name="y-options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="dpms_suspend_spinbutton">
+ <property name="visible">True</property>
+ <property name="tooltip-text" translatable="yes">How long until the monitor goes into power-saving mode.</property>
+ <property name="can-focus">True</property>
+ <property name="climb-rate">15</property>
+ <property name="digits">0</property>
+ <property name="numeric">True</property>
+ <property name="update-policy">GTK_UPDATE_ALWAYS</property>
+ <property name="snap-to-ticks">True</property>
+ <property name="wrap">False</property>
+ <property name="adjustment">adjustment5</property>
+ <accessibility>
+ <relation target="dpms_button" type="controlled-by"/>
+ <relation target="dpms_suspend_label" type="labelled-by"/>
+ <relation target="dpms_suspend_mlabel" type="labelled-by"/>
+ <relation target="dpms_suspend_label" type="flows-from"/>
+ <relation target="dpms_suspend_mlabel" type="flows-to"/>
+ </accessibility>
+ <signal handler="pref_changed_cb" name="activate"/>
+ <signal handler="pref_changed_event_cb" name="focus_out_event"/>
+ <signal handler="pref_changed_cb" name="value_changed"/>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="right-attach">2</property>
+ <property name="top-attach">1</property>
+ <property name="bottom-attach">2</property>
+ <property name="x-options"/>
+ <property name="y-options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="dpms_standby_spinbutton">
+ <property name="visible">True</property>
+ <property name="tooltip-text" translatable="yes">How long until the monitor goes completely black.</property>
+ <property name="can-focus">True</property>
+ <property name="climb-rate">15</property>
+ <property name="digits">0</property>
+ <property name="numeric">True</property>
+ <property name="update-policy">GTK_UPDATE_ALWAYS</property>
+ <property name="snap-to-ticks">True</property>
+ <property name="wrap">False</property>
+ <property name="adjustment">adjustment6</property>
+ <accessibility>
+ <relation target="dpms_button" type="controlled-by"/>
+ <relation target="dpms_standby_label" type="labelled-by"/>
+ <relation target="dpms_standby_mlabel" type="labelled-by"/>
+ <relation target="dpms_standby_label" type="flows-from"/>
+ <relation target="dpms_standby_mlabel" type="flows-to"/>
+ </accessibility>
+ <signal handler="pref_changed_cb" name="activate"/>
+ <signal handler="pref_changed_event_cb" name="focus_out_event"/>
+ <signal handler="pref_changed_cb" name="value_changed"/>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="right-attach">2</property>
+ <property name="top-attach">0</property>
+ <property name="bottom-attach">1</property>
+ <property name="x-options"/>
+ <property name="y-options"/>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="dpms_quickoff_button">
+ <property name="visible">True</property>
+ <property name="tooltip-text" translatable="yes">Whether the monitor should be powered off immediately in "Blank Screen Only" mode, regardless of the above power-management timeouts.</property>
+ <property name="can-focus">True</property>
+ <property name="label" translatable="yes">_Quick Power-off in Blank Only Mode</property>
+ <property name="use-underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus-on-click">True</property>
+ <property name="active">False</property>
+ <property name="inconsistent">False</property>
+ <property name="draw-indicator">True</property>
+ <signal handler="pref_changed_cb" name="toggled"/>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label4">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Display Power Management</property>
+ <property name="use-underline">False</property>
+ <property name="use-markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width-chars">-1</property>
+ <property name="single-line-mode">False</property>
+ <property name="angle">0</property>
+ <accessibility>
+ <relation target="dpms_frame" type="label-for"/>
+ </accessibility>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="right-attach">2</property>
+ <property name="top-attach">0</property>
+ <property name="bottom-attach">1</property>
+ <property name="y-options">fill</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="blanking_frame">
+ <property name="border-width">10</property>
+ <property name="visible">True</property>
+ <property name="label-xalign">0</property>
+ <property name="label-yalign">0.5</property>
+ <property name="shadow-type">GTK_SHADOW_ETCHED_IN</property>
+ <accessibility>
+ <relation target="label5" type="labelled-by"/>
+ </accessibility>
+ <child>
+ <object class="GtkBox" id="fading_hbox">
+ <property name="border-width">8</property>
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">8</property>
+ <property name="orientation">horizontal</property>
+ <child>
+ <object class="GtkBox" id="vbox7">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkCheckButton" id="fade_button">
+ <property name="visible">True</property>
+ <property name="tooltip-text" translatable="yes">Whether the screen should slowly fade to black when the screen saver activates.</property>
+ <property name="can-focus">True</property>
+ <property name="label" translatable="yes">Fade to Black when _Blanking</property>
+ <property name="use-underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus-on-click">True</property>
+ <property name="active">False</property>
+ <property name="inconsistent">False</property>
+ <property name="draw-indicator">True</property>
+ <accessibility>
+ <relation target="fade_spinbutton" type="controller-for"/>
+ </accessibility>
+ <signal handler="pref_changed_cb" name="toggled"/>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkCheckButton" id="unfade_button">
+ <property name="visible">True</property>
+ <property name="tooltip-text" translatable="yes">Whether the screen should slowly fade in from black when the screen saver deactivates.</property>
+ <property name="can-focus">True</property>
+ <property name="label" translatable="yes">Fade from Black When _Unblanking</property>
+ <property name="use-underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus-on-click">True</property>
+ <property name="active">False</property>
+ <property name="inconsistent">False</property>
+ <property name="draw-indicator">True</property>
+ <accessibility>
+ <relation target="fade_spinbutton" type="controller-for"/>
+ </accessibility>
+ <signal handler="pref_changed_cb" name="toggled"/>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="fade_hbox">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+ <property name="orientation">horizontal</property>
+ <child>
+ <object class="GtkLabel" id="fade_dummy">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes"/>
+ <property name="use-underline">False</property>
+ <property name="use-markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">3</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width-chars">-1</property>
+ <property name="single-line-mode">False</property>
+ <property name="angle">0</property>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="fade_label">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">F_ade Duration</property>
+ <property name="use-underline">True</property>
+ <property name="use-markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="mnemonic-widget">fade_spinbutton</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width-chars">-1</property>
+ <property name="single-line-mode">False</property>
+ <property name="angle">0</property>
+ <accessibility>
+ <relation target="fade_spinbutton" type="label-for"/>
+ <relation target="fade_spinbutton" type="flows-to"/>
+ </accessibility>
+ </object>
+ <packing>
+ <property name="padding">14</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="fade_spinbutton">
+ <property name="visible">True</property>
+ <property name="tooltip-text" translatable="yes">How long it should take for the screen to fade in and out.</property>
+ <property name="can-focus">True</property>
+ <property name="climb-rate">1</property>
+ <property name="digits">0</property>
+ <property name="numeric">True</property>
+ <property name="update-policy">GTK_UPDATE_ALWAYS</property>
+ <property name="snap-to-ticks">True</property>
+ <property name="wrap">False</property>
+ <property name="adjustment">adjustment7</property>
+ <accessibility>
+ <relation target="unfade_button" type="controlled-by"/>
+ <relation target="fade_button" type="controlled-by"/>
+ <relation target="fade_label" type="labelled-by"/>
+ <relation target="fade_sec_label" type="labelled-by"/>
+ <relation target="fade_label" type="flows-from"/>
+ <relation target="fade_sec_label" type="flows-to"/>
+ </accessibility>
+ <signal handler="pref_changed_cb" name="activate"/>
+ <signal handler="pref_changed_event_cb" name="focus_out_event"/>
+ <signal handler="pref_changed_cb" name="value_changed"/>
+ </object>
+ <packing>
+ <property name="padding">4</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="fade_sec_label">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">seconds</property>
+ <property name="use-underline">False</property>
+ <property name="use-markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width-chars">-1</property>
+ <property name="single-line-mode">False</property>
+ <property name="angle">0</property>
+ <accessibility>
+ <relation target="fade_spinbutton" type="label-for"/>
+ <relation target="fade_spinbutton" type="flows-from"/>
+ </accessibility>
+ </object>
+ <packing>
+ <property name="padding">2</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHSeparator" id="blanking_hr">
+ <property name="visible">True</property>
+ </object>
+ <packing>
+ <property name="padding">8</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="theme_hbox">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+ <property name="orientation">horizontal</property>
+ <child>
+ <object class="GtkLabel" id="theme_label">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Theme:</property>
+ <property name="tooltip-text" translatable="yes">The color scheme to use on the unlock dialog.</property>
+ <property name="use-underline">True</property>
+ <property name="use-markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="mnemonic-widget">theme_menu</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width-chars">-1</property>
+ <property name="single-line-mode">False</property>
+ <property name="angle">0</property>
+ <accessibility>
+ <relation target="theme_menu" type="label-for"/>
+ </accessibility>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBox" id="theme_menu">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="has-entry">False</property>
+ <property name="model">theme_menu_model</property>
+ <accessibility>
+ <relation target="theme_label" type="labelled-by"/>
+ </accessibility>
+ <child>
+ <object class="GtkCellRendererText" id="renderer2"/>
+ <attributes>
+ <attribute name="text">0</attribute>
+ </attributes>
+ </child>
+ </object>
+ <packing>
+ <property name="padding">4</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="theme_preview">
+ <property name="visible">True</property>
+ <property name="tooltip-text" translatable="yes">Show the what the unlock dialog will look like.</property>
+ <property name="can-default">True</property>
+ <property name="can-focus">True</property>
+ <property name="label" translatable="yes">_Preview</property>
+ <property name="use-underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus-on-click">True</property>
+ <signal handler="preview_theme_cb" name="clicked"/>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="padding">10</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label5">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Blanking</property>
+ <property name="use-underline">False</property>
+ <property name="use-markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width-chars">-1</property>
+ <property name="single-line-mode">False</property>
+ <property name="angle">0</property>
+ <accessibility>
+ <relation target="blanking_frame" type="label-for"/>
+ </accessibility>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="right-attach">2</property>
+ <property name="top-attach">1</property>
+ <property name="bottom-attach">2</property>
+ <property name="x-options">fill</property>
+ <property name="y-options">fill</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="tab-expand">False</property>
+ <property name="tab-fill">False</property>
+ </packing>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="options_tab">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Advanced</property>
+ <property name="use-underline">True</property>
+ <property name="use-markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="mnemonic-widget">notebook</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width-chars">-1</property>
+ <property name="single-line-mode">False</property>
+ <property name="angle">0</property>
+ </object>
+ <packing>
+ <property name="tab-expand">False</property>
+ <property name="tab-fill">False</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkHButtonBox" id="hbuttonbox2">
+ <property name="border-width">5</property>
+ <property name="layout-style">GTK_BUTTONBOX_EDGE</property>
+ <property name="spacing">10</property>
+ <child>
+ <object class="GtkButton" id="helpbutton">
+ <property name="visible">True</property>
+ <property name="can-default">True</property>
+ <property name="can-focus">True</property>
+ <property name="label">gtk-help</property>
+ <property name="use-stock">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus-on-click">True</property>
+ <signal handler="doc_menu_cb" name="clicked"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="closebutton">
+ <property name="visible">True</property>
+ <property name="can-default">True</property>
+ <property name="can-focus">True</property>
+ <property name="label">gtk-close</property>
+ <property name="use-stock">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus-on-click">True</property>
+ <signal handler="quit_menu_cb" name="clicked"/>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack-type">GTK_PACK_END</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </template>
+</interface>
/* dpms.c --- syncing the X Display Power Management System values
- * xscreensaver, Copyright © 2001-2021 Jamie Zawinski <jwz@jwz.org>
+ * xscreensaver, Copyright © 2001-2022 Jamie Zawinski <jwz@jwz.org>
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
Bool verbose_p = p->verbose_p;
static Bool warned_p = False;
- /* If the monitor is currently powered off, defer any changes until
- we are next called while it is powered on. */
+ /* If the monitor is currently powered off, defer any changes until we are
+ next called while it is powered on. Making changes to the DPMS settings
+ can have the side-effect of powering the monitor back on.
+ */
if (! monitor_powered_on_p (dpy))
{
if (verbose_p > 1)
int status = -1;
Colormap *window_cmaps = 0;
int i, j, k;
- int cmaps_per_screen = 5;
- int nscreens = ScreenCount(dpy);
- int ncmaps = nscreens * cmaps_per_screen;
+ unsigned int cmaps_per_screen = 5;
+ unsigned int nscreens = ScreenCount(dpy);
+ unsigned int ncmaps = nscreens * cmaps_per_screen;
Colormap *fade_cmaps = 0;
Bool installed = False;
- int total_ncolors;
+ unsigned int total_ncolors;
XColor *orig_colors, *current_colors, *screen_colors, *orig_screen_colors;
- int screen;
+ unsigned int screen;
window_cmaps = (Colormap *) calloc(sizeof(Colormap), nwindows);
if (!window_cmaps) abort();
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<gresources>
+ <gresource prefix="/org/jwz/xscreensaver">
+ <file preprocess="xml-stripblanks">demo.ui</file>
+ <file preprocess="xml-stripblanks">prefs.ui</file>
+ </gresource>
+</gresources>
/* passwd-pwent.c --- verifying typed passwords with the OS.
- * xscreensaver, Copyright © 1993-2021 Jamie Zawinski <jwz@jwz.org>
+ * xscreensaver, Copyright © 1993-2022 Jamie Zawinski <jwz@jwz.org>
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
result = strdup(p->pw_passwd);
}
+# ifdef HAVE_HPUX_PASSWD
/* The manual for passwd(4) on HPUX 10.10 says:
Password aging is put in effect for a particular user if his
So this means that passwd->pw_passwd isn't simply a string of cyphertext,
it might have trailing junk. So, if there is a comma in the string, and
that comma is beyond position 13, terminate the string before the comma.
+
+ This behavior can break other systems where comma separated data is
+ significant, such as argon2 passwords on NetBSD.
*/
if (result && strlen(result) > 13)
{
if (s)
*s = 0;
}
+# endif /* HAVE_HPUX_PASSWD */
/* We only issue this warning in non-verbose mode if not compiled with
support for PAM. If we're using PAM, it's common for pwent passwords
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+ <template class="XScreenSaverDialog" parent="GtkDialog">
+ <property name="title" translatable="yes">XScreenSaver Settings</property>
+ <property name="type">GTK_WINDOW_TOPLEVEL</property>
+ <property name="window-position">GTK_WIN_POS_NONE</property>
+ <property name="modal">False</property>
+ <property name="resizable">True</property>
+ <property name="destroy-with-parent">False</property>
+ <property name="decorated">True</property>
+ <property name="skip-taskbar-hint">False</property>
+ <property name="skip-pager-hint">False</property>
+ <property name="type-hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
+ <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+ <property name="focus-on-map">True</property>
+ <property name="urgency-hint">False</property>
+ <child internal-child="vbox">
+ <object class="GtkBox" id="dialog_vbox">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+ <property name="orientation">vertical</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ <property name="margin-top">0</property>
+ <property name="margin-bottom">0</property>
+ <child internal-child="action_area">
+ <object class="GtkHButtonBox" id="dialog_action_area">
+ <property name="visible">True</property>
+ <property name="layout-style">GTK_BUTTONBOX_END</property>
+ <child>
+ <object class="GtkButton" id="adv_button">
+ <property name="visible">True</property>
+ <property name="can-default">True</property>
+ <property name="can-focus">True</property>
+ <property name="label" translatable="yes">_Advanced >></property>
+ <property name="use-underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus-on-click">True</property>
+ <signal handler="settings_adv_cb" name="clicked"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="std_button">
+ <property name="visible">True</property>
+ <property name="can-default">True</property>
+ <property name="can-focus">True</property>
+ <property name="label" translatable="yes">_Standard <<</property>
+ <property name="use-underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus-on-click">True</property>
+ <signal handler="settings_std_cb" name="clicked"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="reset_button">
+ <property name="visible">True</property>
+ <property name="can-default">True</property>
+ <property name="can-focus">True</property>
+ <property name="label" translatable="yes">_Reset to Defaults</property>
+ <property name="use-underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus-on-click">True</property>
+ <signal handler="settings_reset_cb" name="clicked"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="cancel_button">
+ <property name="visible">True</property>
+ <property name="can-default">True</property>
+ <property name="can-focus">True</property>
+ <property name="label">gtk-cancel</property>
+ <property name="use-stock">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus-on-click">True</property>
+ <signal handler="settings_cancel_cb" name="clicked"/>
+ </object>
+ </child>
+ <child>
+ <object class="GtkButton" id="ok_button">
+ <property name="visible">True</property>
+ <property name="can-default">True</property>
+ <property name="can-focus">True</property>
+ <property name="label" translatable="yes">Save</property>
+ <property name="use-stock">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus-on-click">True</property>
+ <signal handler="settings_ok_cb" name="clicked"/>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack-type">GTK_PACK_END</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="vbox1">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkFrame" id="opt_frame">
+ <property name="visible">True</property>
+ <property name="label-xalign">0</property>
+ <property name="label-yalign">0</property>
+ <property name="shadow-type">GTK_SHADOW_NONE</property>
+ <accessibility>
+ <relation target="label6" type="labelled-by"/>
+ </accessibility>
+ <child>
+ <object class="GtkNotebook" id="opt_notebook">
+ <property name="border-width">12</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="show-tabs">False</property>
+ <property name="show-border">False</property>
+ <property name="tab-pos">GTK_POS_BOTTOM</property>
+ <property name="scrollable">False</property>
+ <property name="enable-popup">False</property>
+ <signal handler="settings_switch_page_cb" name="switch_page"/>
+ <child>
+ <object class="GtkBox" id="settings_vbox">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="tab-expand">False</property>
+ <property name="tab-fill">False</property>
+ </packing>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="std_label">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Standard</property>
+ <property name="use-underline">False</property>
+ <property name="use-markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width-chars">-1</property>
+ <property name="single-line-mode">False</property>
+ <property name="angle">0</property>
+ </object>
+ <packing>
+ <property name="tab-expand">False</property>
+ <property name="tab-fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkTable" id="adv_table">
+ <property name="visible">True</property>
+ <property name="n-rows">4</property>
+ <property name="n-columns">2</property>
+ <property name="homogeneous">False</property>
+ <property name="row-spacing">20</property>
+ <property name="column-spacing">0</property>
+ <property name="expand">True</property>
+ <child>
+ <object class="GtkLabel" id="cmd_label">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Command Line:</property>
+ <property name="use-underline">True</property>
+ <property name="use-markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="mnemonic-widget">cmd_text</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width-chars">-1</property>
+ <property name="single-line-mode">False</property>
+ <property name="angle">0</property>
+ <accessibility>
+ <relation target="cmd_text" type="label-for"/>
+ </accessibility>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="right-attach">2</property>
+ <property name="top-attach">1</property>
+ <property name="bottom-attach">2</property>
+ <property name="x-options">fill</property>
+ <property name="y-options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="cmd_text">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max-length">0</property>
+ <property name="text" translatable="yes"/>
+ <property name="has-frame">True</property>
+ <property name="invisible-char">*</property>
+ <property name="activates-default">False</property>
+ <accessibility>
+ <relation target="cmd_label" type="labelled-by"/>
+ </accessibility>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="right-attach">2</property>
+ <property name="top-attach">2</property>
+ <property name="bottom-attach">3</property>
+ <property name="y-options"/>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="visual_hbox">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+ <property name="orientation">horizontal</property>
+ <child>
+ <object class="GtkLabel" id="visual">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Visual:</property>
+ <property name="use-underline">True</property>
+ <property name="use-markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">1</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">3</property>
+ <property name="ypad">0</property>
+ <property name="mnemonic-widget">visual_combo</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width-chars">-1</property>
+ <property name="single-line-mode">False</property>
+ <property name="angle">0</property>
+ <accessibility>
+ <relation target="visual_combo" type="label-for"/>
+ </accessibility>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkListStore" id="visual_combo_model">
+ <columns>
+ <column type="gchararray"/>
+ </columns>
+ <data>
+ <row>
+ <col id="0" translatable="yes">Any</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">Best</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">Default</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">Default-N</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">GL</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">TrueColor</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">PseudoColor</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">StaticGray</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">GrayScale</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">DirectColor</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">Color</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">Gray</col>
+ </row>
+ <row>
+ <col id="0" translatable="yes">Mono</col>
+ </row>
+ </data>
+ </object>
+ <object class="GtkComboBox" id="visual_combo">
+ <property name="has-entry">False</property>
+ <property name="visible">True</property>
+ <property name="model">visual_combo_model</property>
+ <accessibility>
+ <relation target="visual" type="labelled-by"/>
+ </accessibility>
+ <child>
+ <object class="GtkEntry" id="visual_entry">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max-length">0</property>
+ <property name="text" translatable="yes"/>
+ <property name="has-frame">True</property>
+ <property name="invisible-char">*</property>
+ <property name="activates-default">False</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="right-attach">2</property>
+ <property name="top-attach">3</property>
+ <property name="bottom-attach">4</property>
+ <property name="x-options">fill</property>
+ <property name="y-options">fill</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="tab-expand">False</property>
+ <property name="tab-fill">False</property>
+ </packing>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="adv_label">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Advanced</property>
+ <property name="use-underline">False</property>
+ <property name="use-markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width-chars">-1</property>
+ <property name="single-line-mode">False</property>
+ <property name="angle">0</property>
+ </object>
+ <packing>
+ <property name="tab-expand">False</property>
+ <property name="tab-fill">False</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label6">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Settings</property>
+ <property name="use-underline">False</property>
+ <property name="use-markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width-chars">-1</property>
+ <property name="single-line-mode">False</property>
+ <property name="angle">0</property>
+ <accessibility>
+ <relation target="opt_frame" type="label-for"/>
+ </accessibility>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="padding">10</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkFrame" id="doc_frame">
+ <property name="visible">True</property>
+ <property name="label-xalign">0</property>
+ <property name="label-yalign">0</property>
+ <property name="shadow-type">GTK_SHADOW_NONE</property>
+ <child>
+ <object class="GtkBox" id="doc_vbox">
+ <property name="border-width">5</property>
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">5</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkLabel" id="doc">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="label" translatable="yes"/>
+ <property name="use-underline">False</property>
+ <property name="use-markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">True</property>
+ <property name="selectable">True</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width-chars">-1</property>
+ <property name="single-line-mode">False</property>
+ <property name="angle">0</property>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="hbox1">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+ <property name="orientation">horizontal</property>
+ <property name="margin-top">12</property>
+ <child>
+ <object class="GtkButton" id="manual">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="label" translatable="yes">_Documentation...</property>
+ <property name="use-underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus-on-click">True</property>
+ <signal handler="manual_cb" name="clicked"/>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="pack-type">GTK_PACK_END</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="label7">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes"/>
+ <property name="use-underline">False</property>
+ <property name="use-markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+ <property name="width-chars">-1</property>
+ <property name="single-line-mode">False</property>
+ <property name="angle">0</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <action-widgets>
+ <action-widget response="0">adv_button</action-widget>
+ <action-widget response="0">std_button</action-widget>
+ <action-widget response="0">reset_button</action-widget>
+ <action-widget response="-6">cancel_button</action-widget>
+ <action-widget response="-5">ok_button</action-widget>
+ </action-widgets>
+ </template>
+</interface>
}
-static Bool
-i_am_a_nobody (uid_t uid)
-{
- struct passwd *p;
-
- p = getpwnam ("nobody");
- if (! p) p = getpwnam ("noaccess");
- if (! p) p = getpwnam ("daemon");
-
- if (! p) /* There is no nobody? */
- return False;
-
- return (uid == p->pw_uid);
-}
-
-
const char *
init_file_name (void)
{
if (!file)
{
- uid_t uid = getuid ();
const char *home = getenv("HOME");
-
- if (i_am_a_nobody (uid) || !home || !*home)
- {
- /* If we're running as nobody, then use root's .xscreensaver file
- (since ~root/.xscreensaver and ~nobody/.xscreensaver are likely
- to be different -- without this, xscreensaver-settings would
- appear to have no effect when the luser is running as root.)
- */
- struct passwd *p = getpwuid (uid);
- if (!p || !p->pw_name || !*p->pw_name)
- {
- fprintf (stderr, "%s: couldn't get user info of uid %d\n",
- blurb(), getuid ());
- }
- else if (!p->pw_dir || !*p->pw_dir)
- {
- fprintf (stderr, "%s: couldn't get home directory of \"%s\"\n",
- blurb(), (p->pw_name ? p->pw_name : "???"));
- }
- else
- {
- home = p->pw_dir;
- }
- }
if (home && *home)
{
const char *name = ".xscreensaver";
init_file_tmp_name (void)
{
static char *file = 0;
- if (!file)
- {
- const char *name = init_file_name();
- const char *suffix = ".tmp";
+ const char *name = init_file_name();
+ char *n2 = chase_symlinks (name);
+ if (n2) name = n2;
- char *n2 = chase_symlinks (name);
- if (n2) name = n2;
+ if (file) free (file);
- if (!name || !*name)
- file = "";
- else
- {
- file = (char *) malloc(strlen(name) + strlen(suffix) + 2);
- strcpy(file, name);
- strcat(file, suffix);
- }
-
- if (n2) free (n2);
+ if (!name || !*name)
+ file = 0;
+ else
+ {
+ file = (char *) malloc(strlen(name) + 20);
+ sprintf (file, "%s.%08lX", name, (random() % 0xFFFFFFFF));
}
+ if (n2) free (n2);
+
if (file && *file)
return file;
else
return 0;
}
+
static const char * const prefs[] = {
"timeout",
"cycle",
"textProgram",
"textURL",
"dialogTheme",
+ "settingsGeom",
"",
"programs",
"",
{
struct parser_closure *c = (struct parser_closure *) closure;
saver_preferences *p = c->prefs;
- if (!p->db) abort();
+ if (!p->db) return; /* Not X11, Wayland */
handle_entry (&p->db, key, val, c->file, lineno);
}
*/
char *visual_name;
char *programs;
- Bool overlay_stderr_p;
- char *stderr_font;
FILE *out;
if (!name) goto END;
/* Give the new .xscreensaver file the same permissions as the old one;
except ensure that it is readable and writable by owner, and not
- executable. Extra hack: if we're running as root, make the file
- be world-readable (so that the daemon, running as "nobody", will
- still be able to read it.)
+ executable.
*/
if (stat(name, &st) == 0)
{
mode |= S_IRUSR | S_IWUSR; /* read/write by user */
mode &= ~(S_IXUSR | S_IXGRP | S_IXOTH); /* executable by none */
- if (getuid() == (uid_t) 0) /* read by group/other */
- mode |= S_IRGRP | S_IROTH;
-
if (fchmod (fileno(out), mode) != 0)
{
char *buf = (char *) malloc(1024 + strlen(name));
}
}
- /* Kludge, since these aren't in the saver_preferences struct... */
+ /* Kludge, since this isn't in the saver_preferences struct... */
visual_name = get_string_resource (dpy, "visualID", "VisualID");
programs = 0;
- overlay_stderr_p = get_boolean_resource (dpy, "overlayStderr", "Boolean");
- stderr_font = get_string_resource (dpy, "font", "Font");
i = 0;
{
CHECK("loadURL") continue; /* don't save */
CHECK("newLoginCommand") continue; /* don't save */
CHECK("dialogTheme") type = pref_str, s = p->dialog_theme;
+ CHECK("settingsGeom") type = pref_str, s = p->settings_geom;
CHECK("nice") type = pref_int, i = p->nice_inferior;
CHECK("memoryLimit") continue; /* don't save */
CHECK("fade") type = pref_bool, b = p->fade_p;
CHECK("ignoreUninstalledPrograms")
type = pref_bool, b = p->ignore_uninstalled_p;
- CHECK("font") type = pref_str, s = stderr_font;
-
CHECK("dpmsEnabled") type = pref_bool, b = p->dpms_enabled_p;
CHECK("dpmsQuickOff") type = pref_bool, b = p->dpms_quickoff_p;
CHECK("dpmsStandby") type = pref_time, t = p->dpms_standby;
CHECK("programs") type = pref_str, s = programs;
CHECK("pointerHysteresis")type = pref_int, i = p->pointer_hysteresis;
- CHECK("overlayStderr") type = pref_bool, b = overlay_stderr_p;
+ CHECK("font") continue; /* don't save */
+ CHECK("overlayStderr") continue; /* don't save */
CHECK("overlayTextBackground") continue; /* don't save */
CHECK("overlayTextForeground") continue; /* don't save */
CHECK("bourneShell") continue; /* don't save */
fprintf(out, "\n");
if (visual_name) free(visual_name);
- if (stderr_font) free(stderr_font);
if (programs) free(programs);
if (fclose(out) == 0)
p->new_login_command = get_string_resource(dpy, "newLoginCommand",
"Command");
p->dialog_theme = get_string_resource(dpy, "dialogTheme", "String");
+ p->settings_geom = get_string_resource(dpy, "settingsGeom", "String");
p->auth_warning_slack = get_integer_resource(dpy, "authWarningSlack",
"Integer");
{
int tab = 30;
int col = tab;
- char *cmd2 = (char *) calloc (1, 2 * (strlen (cmd) + 1));
+ char *cmd2 = (char *) calloc (1, 2 * (strlen (cmd) + 10));
const char *in = cmd;
char *out = cmd2;
while (*in)
while (out > cmd2 && isspace (out[-1]))
*(--out) = 0;
+ /* In version 6.05, the defaults were changed from "-root" to "--root".
+ If anything in .xscreensaver still ends with "-root", silently change
+ it, so that the "Reset to Defaults" button is enabled/disabled as
+ appropriate, and doesn't think the command differs from the default.
+ */
+ if (out > cmd2+7 && !strcmp (out-6, " -root"))
+ strcpy (out-6, " --root"); /* malloc had enough slack */
+
return cmd2;
}
/* subprocs.c --- choosing, spawning, and killing screenhacks.
- * xscreensaver, Copyright © 1991-2021 Jamie Zawinski <jwz@jwz.org>
+ * xscreensaver, Copyright © 1991-2022 Jamie Zawinski <jwz@jwz.org>
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
fprintf (stderr, "%s: %s: unblanking\n", blurb(),
signal_name (sigterm_received));
+ /* We are in the process of shutting down and are about to exit,
+ so don't accidentally re-launch hacks. */
+ si->terminating_p = True;
+
+ if (si->watchdog_id)
+ {
+ XtRemoveTimeOut (si->watchdog_id);
+ si->watchdog_id = 0;
+ }
+
/* Kill before unblanking, to stop drawing as soon as possible. */
for (i = 0; i < si->nscreens; i++)
{
char *load_url_command; /* How one loads URLs. */
char *new_login_command; /* Command for the "New Login" button. */
char *dialog_theme; /* Color scheme on the unlock dialog */
+ char *settings_geom; /* Saved positions of the settings windows */
int auth_warning_slack; /* Don't warn about login failures if they
all happen within this many seconds of
Bool demoing_p; /* Whether we are demoing a single hack
(without UI.) */
Bool emergency_p; /* Restarted because of a crash */
+ Bool terminating_p; /* In the process of shutting down */
+
XtIntervalId watchdog_id; /* Timer to implement `prefs.watchdog */
int selection_mode; /* Set to -1 if the NEXT ClientMessage has just
{
saver_info *si = (saver_info *) closure;
saver_preferences *p = &si->prefs;
- Bool running_p, on_p;
+ Bool running_p, on_p, terminating_p;
/* If the DPMS settings on the server have changed, change them back to
what ~/.xscreensaver says they should be. */
running_p = any_screenhacks_running_p (si);
on_p = monitor_powered_on_p (si->dpy);
+ terminating_p = si->terminating_p;
if (running_p && !on_p)
{
int i;
kill_screenhack (&si->screens[i]);
/* Do not clear current_hack here. */
}
+ else if (terminating_p)
+ {
+ /* If we are in the process of shutting down and are about to exit,
+ don't re-launch anything just because the monitor came back on. */
+ }
else if (!running_p && on_p)
{
/* If the hack number is set but no hack is running, it is because the
#endif /* HAVE_PROC_OOM */
+#ifndef HAVE_DPMS_EXTENSION
+# define dpms_init (dpy) /** */
+
+#else /* HAVE_DPMS_EXTENSION */
+
+# include <X11/Xproto.h>
+# include <X11/extensions/dpms.h>
+
+static int
+ignore_all_errors_ehandler (Display *dpy, XErrorEvent *error)
+{
+ return 0;
+}
+
+/* When XScreenSaver first launches, power on the monitor and disable DPMS.
+ The DPMS settings will be re-written when 'xscreensaver-gfx' launches for
+ the first time to blank the screen, and will be re-enabled if that is what
+ is configured in ~/.xscreensaver.
+
+ Without this, if the server's default DPMS timeouts are different than, and
+ less than, the .xscreensaver file's 'timeout' and 'dpmsStandby' the monitor
+ will already be powered down when 'xscreensaver-gfx' launches for the first
+ time, and it will never change them, as it can't touch those settings if
+ the monitor is already powered off.
+
+ It would be better for us to call sync_server_dpms_settings() here, but
+ that requires a full 'saver_preferences' struct. Once 'xscreensaver-gfx'
+ is launched, it will correct things.
+
+ The only way this behaves oddly is if the user has set their 'dpmsStandby'
+ to less than their 'timeout', but that would be weird, right? That
+ probably shouldn't even be permitted (though currently it is).
+
+ This is in 'xscreensaver-auth' because that's run at startup with either
+ --splash or --init, long before 'xscreensaver-gfx' is run for the first
+ time; and putting this code into 'xscreensaver' would violate the principle
+ of linking only the bare minimum into the daemon itself.
+ */
+static void
+dpms_init (Display *dpy)
+{
+ int ev, err;
+ XErrorHandler old_handler;
+ XSync (dpy, False);
+ old_handler = XSetErrorHandler (ignore_all_errors_ehandler);
+ XSync (dpy, False);
+
+ if (DPMSQueryExtension (dpy, &ev, &err))
+ {
+ DPMSForceLevel (dpy, DPMSModeOn);
+ DPMSDisable (dpy);
+ }
+ XSetScreenSaver (dpy, 0, 0, 0, 0);
+
+ XSync (dpy, False);
+ XSetErrorHandler (old_handler);
+}
+#endif /* HAVE_DPMS_EXTENSION */
+
+
int
main (int argc, char **argv)
{
if (!splash_p && !init_p)
lock_priv_init ();
- if (!splash_p && init_p)
- exit (0);
-
disavow_privileges ();
- if (!splash_p)
+ if (!splash_p && !init_p)
lock_init ();
/* Setting the locale is necessary for XLookupString to return multi-byte
if (xsync_p) XSynchronize (dpy, True);
init_xscreensaver_atoms (dpy);
- if (splash_p)
+ if (splash_p == 1 || init_p)
+ dpms_init (dpy);
+
+ if (!splash_p && init_p)
+ {
+ exit (0);
+ }
+ else if (splash_p)
{
/* Settings button is disabled with --splash --splash */
xscreensaver_splash (root_widget, splash_p > 1);
xscreensaver - extensible screen saver and screen locking framework
.SH SYNOPSIS
.B xscreensaver-auth
-[\-display \fIhost:display.screen\fP]
+[\-\-display \fIhost:display.screen\fP]
.SH DESCRIPTION
The
.BR xscreensaver (1)
This is like either \fI\-\-activate\fP or \fI\-\-cycle\fP, depending on which
is more appropriate, except that the graphics hack that will be run is the
next one in the list, instead of a randomly-chosen one. In other words,
-repeatedly executing -next will cause the xscreensaver process to invoke each
-graphics demo sequentially. (Though using the \fI\-\-settings\fP option is
-probably an easier way to accomplish that.)
+repeatedly executing \-\-next will cause the xscreensaver process to invoke
+each graphics demo sequentially. (Though using the \fI\-\-settings\fP option
+is probably an easier way to accomplish that.)
.TP 8
.B \-\-prev
This is like \fI\-\-next\fP, but cycles in the other direction.
.TP 8
-.B \-\-select \fInumber\fP
+.B \-\-select\fP \fInumber\fP
Like \fI\-\-activate\fP, but runs the \fIN\fPth element in the list of hacks.
By knowing what is in the \fIprograms\fP list, and in what order, you can use
this to activate the screensaver with a particular graphics demo. (The first
Causes the xscreensaver process to exit gracefully.
This does nothing if the display is currently locked.
.B Warning:
-never use \fIkill -9\fP with \fIxscreensaver\fP while the screensaver is
-active. If you are using a virtual root window manager, that can leave
-things in an inconsistent state, and you may need to restart your window
-manager to repair the damage.
+never use \fIkill -9\fP with \fIxscreensaver\fP. That can leave things in an
+inconsistent state, and you may need to log out to repair the damage.
.TP 8
.B \-\-restart
Causes the screensaver process to exit and then restart with the same command
.BR xscreensaver\-settings (1),
.BR xset (1)
.SH COPYRIGHT
-Copyright \(co 1992-2021 by Jamie Zawinski.
+Copyright \(co 1992-2022 by Jamie Zawinski.
Permission to use, copy, modify, distribute, and sell this software
and its documentation for any purpose is hereby granted without fee,
provided that the above copyright notice appear in all copies and that
suitability of this software for any purpose. It is provided "as is"
without express or implied warranty.
.SH AUTHOR
-Jamie Zawinski <jwz@jwz.org>, 13-aug-1992.
+Jamie Zawinski <jwz@jwz.org>.
Please let me know if you find any bugs or make any improvements.
xscreensaver - extensible screen saver and screen locking framework
.SH SYNOPSIS
.B xscreensaver-gfx
-[\-display \fIhost:display.screen\fP]
+[\-\-display \fIhost:display.screen\fP]
.SH DESCRIPTION
The
.BR xscreensaver (1)
xscreensaver-settings - configure and control the xscreensaver daemon
.SH SYNOPSIS
.B xscreensaver\-settings
-[\-display \fIhost:display.screen\fP]
-[\-prefs]
-[\-debug]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-prefs]
+[\-\-debug]
.SH DESCRIPTION
The \fIxscreensaver\-settings\fP program is a graphical front-end for
setting the parameters used by the
Activates the background \fIxscreensaver\fP daemon, which will then run
a demo at random. This is the same as running
.BR xscreensaver\-command (1)
-with the \fI\-activate\fP option.
+with the \fI\-\-activate\fP option.
.TP 4
.B Lock Screen Now
Just like \fBBlank Screen Now\fP, except the screen will be locked as
well (even if it is not configured to lock all the time.) This is the
same as running
.BR xscreensaver\-command (1)
-with the \fI\-lock\fP option.
+with the \fI\-\-lock\fP option.
.TP 4
.B Kill Daemon
If the xscreensaver daemon is running on this screen, kill it.
This is the same as running
.BR xscreensaver\-command (1)
-with the \fI\-exit\fP option.
+with the \fI\-\-exit\fP option.
.TP 4
.B Restart Daemon
If the xscreensaver daemon is running on this screen, kill it.
.I xscreensaver\-settings
accepts the following command line options.
.TP 8
-.B \-display \fIhost:display.screen\fP
+.B \-\-display \fIhost:display.screen\fP
The X display to use. The \fIxscreensaver\-settings\fP program will open its
window on that display, and also control the \fIxscreensaver\fP daemon that
is managing that same display.
.TP 8
-.B \-prefs
+.B \-\-prefs
Start up with the \fBAdvanced\fP tab selected by default
instead of the \fBDisplay Modes\fP tab.
.TP 8
-.B \-debug
+.B \-\-debug
Causes lots of diagnostics to be printed on stderr.
.PP
The \fIxscreensaver\fP and \fIxscreensaver\-settings\fP processes must run
.BR xscreensaver\-getimage\-video (MANSUFFIX),
.BR xscreensaver\-text (MANSUFFIX)
.SH COPYRIGHT
-Copyright \(co 1992-2021 by Jamie Zawinski.
+Copyright \(co 1992-2022 by Jamie Zawinski.
Permission to use, copy, modify, distribute, and sell this software
and its documentation for any purpose is hereby granted without fee,
provided that the above copyright notice appear in all copies and that
suitability of this software for any purpose. It is provided "as is"
without express or implied warranty.
.SH AUTHOR
-Jamie Zawinski <jwz@jwz.org>, 13-aug-1992.
+Jamie Zawinski <jwz@jwz.org>.
Please let me know if you find any bugs or make any improvements.
*
*****************************************************************************
*
+ * MPV 0.33+, I think:
+ *
+ * The developer had a hissy fit and removed "xdg-screensaver" support:
+ *
+ * https://github.com/mpv-player/mpv/commit/c498b2846af0ee8835b9144c9f6893568a4e49c6
+ *
+ * So now I guess you're back to figuring out how to add a "heartbeat"
+ * command to have MPV periodically call "xscreensaver-command -reset".
+ * Good luck with that. Maybe you should just use VLC instead.
+ *
+ *
+ *****************************************************************************
+ *
* VLC 3.0.16-1, Raspbian 11.1 & Debian 11.3:
*
* Sends "Inhibit" to the first of these targets that exists at launch:
.PP
Firefox does not have either of these problems.
.SS MPLAYER (2:1.4)
-Makes no attempt to inhibit the screen saver. Use VLC or MPV instead.
+Makes no attempt to inhibit the screen saver. Use VLC instead.
+.SS MPV (0.33)
+Makes no attempt to inhibit the screen saver. Use VLC instead.
.SS VARIOUS
Most programs fail to inhibit screen blanking if they crash or are killed
while playing. We try to detect when this has happened and auto-uninhibit,
{
logfile = argv[++i];
if (!logfile) goto HELP;
- verbose_p = cmdline_verbose_p = cmdline_verbose_val = True;
+ if (! verbose_p) /* might already be -vv */
+ verbose_p = cmdline_verbose_p = cmdline_verbose_val = True;
}
else if (!strcmp (argv[i], "-d") ||
!strcmp (argv[i], "-dpy") ||
.BR xscreensaver\-settings (1)
program is where you configure if and when your monitor should power off.
It saves the settings in your \fI~/.xscreensaver\fP file.
+Do not use
+.BR xset (1)
+to manually change the power management settings, that won't work.
-If the power management section is grayed out in the
-.BR xscreensaver\-settings (1)
-window, then that means that your X server does not support
-the XDPMS extension, and so control over the monitor's power state
-is not available.
-
-When the monitor is powered down, the display hacks are stopped
+When the monitor is powered down, the display hacks will stop running
(though it may take a minute or two for XScreenSaver to notice).
-
-Note: if you use
-.BR xset (1)
-to change the power management settings, XScreenSaver will override those
-changes. Whatever is in the \fI~/.xscreensaver\fP file takes precedence.
.SH LAPTOP LIDS
If your system uses
.BR systemd (1)
.br
"\fIHardware / Power Management / Suspend session\fP"
.br
-"\fIHardware / Power Management / Laptop lid closed => Do Nothing\fP"
+"\fIHardware / Power Management / Laptop lid closed" = Do Nothing\fP
If there are multiple tabs, you may to change these settings on all three
of them: "On AC power", "Battery" and "Low Battery".
Comment: XScreenSaver
.sp
.fi
+.SS LAPTOP LIDS WITHOUT SYSTEMD
+BSD systems or other systems without
+.BR systemd (1)
+or
+.BR elogind (8)
+might have luck by adding "\fIxscreensaver\-command \-\-suspend\fP" to
+some appropriate spot in \fI/etc/acpi/events/anything\fP or in
+\fI/etc/acpi/handler.sh\fP, if those files exist.
.SS LAUNCHING XSCREENSAVER FROM GDM
You can run \fIxscreensaver\fP from your
.BR gdm (1)
There might be a way to accomplish this with other display managers.
It's a mystery!
-.SS LAPTOP LIDS WITHOUT SYSTEMD
-BSD systems or other systems without
-.BR systemd (1)
-or
-.BR elogind (8)
-might have luck by adding "\fIxscreensaver\-command \-\-suspend\fP" to
-some appropriate spot in \fI/etc/acpi/events/anything\fP or in
-\fI/etc/acpi/handler.sh\fP, if those files exist.
.SH THE WAYLAND PROBLEM
Wayland is a completely different window system that is intended to replace
X11. After 14+ years of trying, some Linux distros have finally begun
echo vm.overcommit_memory = 2 >> /etc/sysctl.conf
.sp
.fi
+In addition to the kernel's OOM-killer,
+.BR systemd (1)
+has its own. The included \fIxscreensaver.service\fP file attempts to
+evade it, but you may want to just turn it off anyway:
+.nf
+.sp
+ sudo systemctl disable --now systemd-oomd
+ sudo systemctl mask systemd-oomd
+.sp
+.fi
.SS X SERVER ACCESS IS GAME OVER
X11's security model is all-or-nothing. If a program can connect to your X
server at all, either locally or over the network, it can log all of your
+++ /dev/null
-<?xml version="1.0"?>
-<!--*- mode: xml -*-->
-<interface>
- <object class="GtkAdjustment" id="adjustment1">
- <property name="upper">720</property>
- <property name="lower">1</property>
- <property name="page_increment">15</property>
- <property name="step_increment">1</property>
- <property name="page_size">0</property>
- <property name="value">1</property>
- </object>
- <object class="GtkAdjustment" id="adjustment2">
- <property name="upper">720</property>
- <property name="lower">0</property>
- <property name="page_increment">15</property>
- <property name="step_increment">1</property>
- <property name="page_size">0</property>
- <property name="value">0</property>
- </object>
- <object class="GtkAdjustment" id="adjustment3">
- <property name="upper">720</property>
- <property name="lower">0</property>
- <property name="page_increment">15</property>
- <property name="step_increment">1</property>
- <property name="page_size">0</property>
- <property name="value">0</property>
- </object>
- <object class="GtkAdjustment" id="adjustment4">
- <property name="upper">1440</property>
- <property name="lower">0</property>
- <property name="page_increment">15</property>
- <property name="step_increment">1</property>
- <property name="page_size">0</property>
- <property name="value">0</property>
- </object>
- <object class="GtkAdjustment" id="adjustment5">
- <property name="upper">1440</property>
- <property name="lower">0</property>
- <property name="page_increment">15</property>
- <property name="step_increment">1</property>
- <property name="page_size">0</property>
- <property name="value">0</property>
- </object>
- <object class="GtkAdjustment" id="adjustment6">
- <property name="upper">1440</property>
- <property name="lower">0</property>
- <property name="page_increment">15</property>
- <property name="step_increment">1</property>
- <property name="page_size">0</property>
- <property name="value">0</property>
- </object>
- <object class="GtkAdjustment" id="adjustment7">
- <property name="upper">10</property>
- <property name="lower">0</property>
- <property name="page_increment">1</property>
- <property name="step_increment">1</property>
- <property name="page_size">0</property>
- <property name="value">0</property>
- </object>
- <object class="GtkListStore" id="mode_menu_model">
- <columns>
- <column type="gchararray"/>
- </columns>
- <data>
- <row>
- <col id="0" translatable="yes">Disable Screen Saver</col>
- </row>
- <row>
- <col id="0" translatable="yes">Blank Screen Only</col>
- </row>
- <row>
- <col id="0" translatable="yes">Only One Screen Saver</col>
- </row>
- <row>
- <col id="0" translatable="yes">Random Screen Saver</col>
- </row>
- <row>
- <col id="0" translatable="yes">Same Random Savers</col>
- </row>
- </data>
- </object>
-
- <object class="GtkListStore" id="theme_menu_model">
- <columns>
- <column type="gchararray"/>
- </columns>
- <data>
- <row>
- <col id="0" translatable="yes">Default</col>
- </row>
- </data>
- </object>
-
-
-
-
-
- <object class="GtkListStore" id="visual_combo_model">
- <columns>
- <column type="gchararray"/>
- </columns>
- <data>
- <row>
- <col id="0" translatable="yes">Any</col>
- </row>
- <row>
- <col id="0" translatable="yes">Best</col>
- </row>
- <row>
- <col id="0" translatable="yes">Default</col>
- </row>
- <row>
- <col id="0" translatable="yes">Default-N</col>
- </row>
- <row>
- <col id="0" translatable="yes">GL</col>
- </row>
- <row>
- <col id="0" translatable="yes">TrueColor</col>
- </row>
- <row>
- <col id="0" translatable="yes">PseudoColor</col>
- </row>
- <row>
- <col id="0" translatable="yes">StaticGray</col>
- </row>
- <row>
- <col id="0" translatable="yes">GrayScale</col>
- </row>
- <row>
- <col id="0" translatable="yes">DirectColor</col>
- </row>
- <row>
- <col id="0" translatable="yes">Color</col>
- </row>
- <row>
- <col id="0" translatable="yes">Gray</col>
- </row>
- <row>
- <col id="0" translatable="yes">Mono</col>
- </row>
- </data>
- </object>
- <object class="GtkUIManager" id="uimanager1">
- <child>
- <object class="GtkActionGroup" id="actiongroup1">
- <child>
- <object class="GtkAction" id="file">
- <property name="name">file</property>
- <property name="label" translatable="yes">_File</property>
- <signal handler="file_menu_cb" last_modification_time="Sun, 06 Mar 2005 21:41:13 GMT" name="activate"/>
- </object>
- </child>
- <child>
- <object class="GtkAction" id="activate_action">
- <property name="name">activate_action</property>
- <property name="label" translatable="yes">_Blank Screen Now</property>
- <signal handler="activate_menu_cb" name="activate"/>
- </object>
- </child>
- <child>
- <object class="GtkAction" id="lock_action">
- <property name="name">lock_action</property>
- <property name="label" translatable="yes">_Lock Screen Now</property>
- <signal handler="lock_menu_cb" name="activate"/>
- </object>
- </child>
- <child>
- <object class="GtkAction" id="kill_action">
- <property name="name">kill_action</property>
- <property name="label" translatable="yes">_Kill Daemon</property>
- <signal handler="kill_menu_cb" name="activate"/>
- </object>
- </child>
- <child>
- <object class="GtkAction" id="restart_action">
- <property name="name">restart_action</property>
- <property name="label" translatable="yes">_Restart Daemon</property>
- <signal handler="restart_menu_cb" name="activate"/>
- </object>
- </child>
- <child>
- <object class="GtkAction" id="exit_action">
- <property name="name">exit_action</property>
- <property name="label" translatable="yes">_Quit</property>
- <signal handler="exit_menu_cb" name="activate"/>
- </object>
- </child>
- <child>
- <object class="GtkAction" id="help">
- <property name="name">help</property>
- <property name="label" translatable="yes">_Help</property>
- </object>
- </child>
- <child>
- <object class="GtkAction" id="about_action">
- <property name="name">about_action</property>
- <property name="label" translatable="yes">_About...</property>
- <signal handler="about_menu_cb" name="activate"/>
- </object>
- </child>
- <child>
- <object class="GtkAction" id="doc_action">
- <property name="name">doc_action</property>
- <property name="label" translatable="yes">_Documentation...</property>
- <signal handler="doc_menu_cb" name="activate"/>
- </object>
- </child>
- </object>
- </child>
- <ui>
- <menubar name="menubar">
- <menu action="file">
- <menuitem name="activate_menu" action="activate_action"/>
- <menuitem name="lock_menu" action="lock_action"/>
- <menuitem name="kill_menu" action="kill_action"/>
- <menuitem name="restart_menu" action="restart_action"/>
- <separator/>
- <menuitem name="exit_menu" action="exit_action"/>
- </menu>
- <menu action="help">
- <menuitem name="about_menu" action="about_action"/>
- <menuitem name="doc_menu" action="doc_action"/>
- </menu>
- </menubar>
- </ui>
- </object>
- <object class="GtkWindow" id="xscreensaver_demo">
- <property name="title" translatable="yes">XScreenSaver</property>
- <property name="type">GTK_WINDOW_TOPLEVEL</property>
- <property name="window_position">GTK_WIN_POS_NONE</property>
- <property name="modal">False</property>
- <property name="resizable">True</property>
- <property name="destroy_with_parent">False</property>
- <property name="decorated">True</property>
- <property name="skip_taskbar_hint">False</property>
- <property name="skip_pager_hint">False</property>
- <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
- <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
- <property name="focus_on_map">True</property>
- <property name="urgency_hint">False</property>
- <child>
- <object class="GtkVBox" id="outer_vbox">
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">5</property>
- <child>
- <object class="GtkMenuBar" constructor="uimanager1" id="menubar">
- <property name="visible">True</property>
- <property name="pack_direction">GTK_PACK_DIRECTION_LTR</property>
- <property name="child_pack_direction">GTK_PACK_DIRECTION_LTR</property>
- </object>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- <child>
- <object class="GtkHBox" id="spacer_hbox">
- <property name="border_width">8</property>
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">0</property>
- <child>
- <object class="GtkNotebook" id="notebook">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="show_tabs">True</property>
- <property name="show_border">True</property>
- <property name="tab_pos">GTK_POS_TOP</property>
- <property name="scrollable">False</property>
- <property name="enable_popup">False</property>
- <signal handler="switch_page_cb" name="switch_page"/>
- <child>
- <object class="GtkTable" id="demos_table">
- <property name="border_width">10</property>
- <property name="visible">True</property>
- <property name="n_rows">2</property>
- <property name="n_columns">2</property>
- <property name="homogeneous">False</property>
- <property name="row_spacing">0</property>
- <property name="column_spacing">0</property>
- <child>
- <object class="GtkTable" id="blanking_table">
- <property name="visible">True</property>
- <property name="n_rows">3</property>
- <property name="n_columns">4</property>
- <property name="homogeneous">False</property>
- <property name="row_spacing">2</property>
- <property name="column_spacing">0</property>
- <child>
- <object class="GtkLabel" id="cycle_label">
- <property name="visible">True</property>
- <property name="label" translatable="yes">_Cycle After</property>
- <property name="use_underline">True</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_RIGHT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">1</property>
- <property name="yalign">0.5</property>
- <property name="xpad">8</property>
- <property name="ypad">0</property>
- <property name="mnemonic_widget">cycle_spinbutton</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- <accessibility>
- <relation target="cycle_spinbutton" type="label-for"/>
- <relation target="cycle_spinbutton" type="flows-to"/>
- </accessibility>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="x_options">fill</property>
- <property name="y_options"/>
- </packing>
- </child>
- <child>
- <object class="GtkEventBox" id="lock_button_eventbox">
- <property name="visible">True</property>
- <property name="tooltip-text" translatable="yes">Whether a password should be required to un-blank the screen.</property>
- <property name="visible_window">False</property>
- <property name="above_child">False</property>
- <child>
- <object class="GtkCheckButton" id="lock_button">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">_Lock Screen After </property>
- <property name="use_underline">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <property name="active">False</property>
- <property name="inconsistent">False</property>
- <property name="draw_indicator">True</property>
- <accessibility>
- <relation target="lock_spinbutton" type="controller-for"/>
- <relation target="lock_spinbutton" type="label-for"/>
- <relation target="lock_spinbutton" type="flows-to"/>
- </accessibility>
- <signal handler="pref_changed_cb" name="toggled"/>
- <child internal-child="accessible">
- <object class="AtkObject" id="a11y-lock_button1">
- <property name="AtkObject::accessible_name" translatable="yes">Lock Screen</property>
- </object>
- </child>
- </object>
- </child>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="right_attach">2</property>
- <property name="top_attach">2</property>
- <property name="bottom_attach">3</property>
- <property name="x_options">fill</property>
- <property name="y_options"/>
- </packing>
- </child>
- <child>
- <object class="GtkSpinButton" id="timeout_spinbutton">
- <property name="visible">True</property>
- <property name="tooltip-text" translatable="yes">How long before the screen saver activates.</property>
- <property name="can_focus">True</property>
- <property name="climb_rate">15</property>
- <property name="digits">0</property>
- <property name="numeric">True</property>
- <property name="update_policy">GTK_UPDATE_ALWAYS</property>
- <property name="snap_to_ticks">True</property>
- <property name="wrap">False</property>
- <property name="adjustment">adjustment1</property>
- <accessibility>
- <relation target="timeout_label" type="labelled-by"/>
- <relation target="timeout_mlabel" type="labelled-by"/>
- <relation target="timeout_label" type="flows-from"/>
- <relation target="timeout_mlabel" type="flows-to"/>
- </accessibility>
- <signal handler="pref_changed_cb" name="activate"/>
- <signal handler="pref_changed_event_cb" name="focus_out_event"/>
- <signal handler="pref_changed_cb" name="value_changed"/>
- </object>
- <packing>
- <property name="left_attach">2</property>
- <property name="right_attach">3</property>
- <property name="top_attach">0</property>
- <property name="bottom_attach">1</property>
- <property name="x_options">fill</property>
- <property name="y_options"/>
- </packing>
- </child>
- <child>
- <object class="GtkSpinButton" id="lock_spinbutton">
- <property name="visible">True</property>
- <property name="tooltip-text" translatable="yes">How long after the screen blanks until a password will be required.</property>
- <property name="can_focus">True</property>
- <property name="climb_rate">15</property>
- <property name="digits">0</property>
- <property name="numeric">True</property>
- <property name="update_policy">GTK_UPDATE_ALWAYS</property>
- <property name="snap_to_ticks">True</property>
- <property name="wrap">False</property>
- <property name="adjustment">adjustment2</property>
- <accessibility>
- <relation target="lock_button" type="controlled-by"/>
- <relation target="lock_button" type="labelled-by"/>
- <relation target="lock_mlabel" type="labelled-by"/>
- <relation target="lock_button" type="flows-from"/>
- <relation target="lock_mlabel" type="flows-to"/>
- </accessibility>
- <signal handler="pref_changed_cb" name="activate"/>
- <signal handler="pref_changed_event_cb" name="focus_out_event"/>
- <signal handler="pref_changed_cb" name="value_changed"/>
- <child internal-child="accessible">
- <object class="AtkObject" id="a11y-lock_spinbutton1">
- <property name="AtkObject::accessible_name" translatable="yes">Lock Screen After</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="left_attach">2</property>
- <property name="right_attach">3</property>
- <property name="top_attach">2</property>
- <property name="bottom_attach">3</property>
- <property name="y_padding">10</property>
- <property name="x_options">fill</property>
- <property name="y_options"/>
- </packing>
- </child>
- <child>
- <object class="GtkSpinButton" id="cycle_spinbutton">
- <property name="visible">True</property>
- <property name="tooltip-text" translatable="yes">How long each display mode should run before choosing a new one (in Random mode.)</property>
- <property name="can_focus">True</property>
- <property name="climb_rate">15</property>
- <property name="digits">0</property>
- <property name="numeric">True</property>
- <property name="update_policy">GTK_UPDATE_ALWAYS</property>
- <property name="snap_to_ticks">True</property>
- <property name="wrap">False</property>
- <property name="adjustment">adjustment3</property>
- <accessibility>
- <relation target="cycle_label" type="labelled-by"/>
- <relation target="cycle_mlabel" type="labelled-by"/>
- <relation target="cycle_label" type="flows-from"/>
- <relation target="cycle_mlabel" type="flows-to"/>
- </accessibility>
- <signal handler="pref_changed_cb" name="activate"/>
- <signal handler="pref_changed_event_cb" name="focus_out_event"/>
- <signal handler="pref_changed_cb" name="value_changed"/>
- </object>
- <packing>
- <property name="left_attach">2</property>
- <property name="right_attach">3</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="x_options">fill</property>
- <property name="y_options"/>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="lock_mlabel">
- <property name="visible">True</property>
- <property name="label" translatable="yes">minutes</property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0</property>
- <property name="yalign">0.5</property>
- <property name="xpad">8</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- <accessibility>
- <relation target="lock_spinbutton" type="label-for"/>
- <relation target="lock_spinbutton" type="flows-to"/>
- </accessibility>
- </object>
- <packing>
- <property name="left_attach">3</property>
- <property name="right_attach">4</property>
- <property name="top_attach">2</property>
- <property name="bottom_attach">3</property>
- <property name="y_options"/>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="cycle_mlabel">
- <property name="visible">True</property>
- <property name="label" translatable="yes">minutes</property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0</property>
- <property name="yalign">0.5</property>
- <property name="xpad">8</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- <accessibility>
- <relation target="cycle_spinbutton" type="label-for"/>
- <relation target="cycle_spinbutton" type="flows-from"/>
- </accessibility>
- </object>
- <packing>
- <property name="left_attach">3</property>
- <property name="right_attach">4</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="y_options"/>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="timeout_label">
- <property name="visible">True</property>
- <property name="label" translatable="yes">_Blank After</property>
- <property name="use_underline">True</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_RIGHT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">1</property>
- <property name="yalign">0.5</property>
- <property name="xpad">8</property>
- <property name="ypad">0</property>
- <property name="mnemonic_widget">timeout_spinbutton</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- <accessibility>
- <relation target="timeout_spinbutton" type="label-for"/>
- <relation target="timeout_spinbutton" type="flows-to"/>
- </accessibility>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">0</property>
- <property name="bottom_attach">1</property>
- <property name="x_options">fill</property>
- <property name="y_options"/>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="timeout_mlabel">
- <property name="visible">True</property>
- <property name="label" translatable="yes">minutes</property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0</property>
- <property name="yalign">0.5</property>
- <property name="xpad">8</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- <accessibility>
- <relation target="timeout_spinbutton" type="label-for"/>
- <relation target="timeout_spinbutton" type="flows-from"/>
- </accessibility>
- </object>
- <packing>
- <property name="left_attach">3</property>
- <property name="right_attach">4</property>
- <property name="top_attach">0</property>
- <property name="bottom_attach">1</property>
- <property name="y_options"/>
- </packing>
- </child>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="right_attach">1</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="x_options">fill</property>
- <property name="y_options">fill</property>
- </packing>
- </child>
- <child>
- <object class="GtkHButtonBox" id="demo_manual_hbbox">
- <property name="visible">True</property>
- <property name="layout_style">GTK_BUTTONBOX_SPREAD</property>
- <property name="spacing">30</property>
- <child>
- <object class="GtkButton" id="demo">
- <property name="visible">True</property>
- <property name="tooltip-text" translatable="yes">Demo the selected screen saver in full-screen mode (click the mouse to return.)</property>
- <property name="can_default">True</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">_Preview</property>
- <property name="use_underline">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <signal handler="run_this_cb" name="clicked"/>
- </object>
- </child>
- <child>
- <object class="GtkButton" id="settings">
- <property name="visible">True</property>
- <property name="tooltip-text" translatable="yes">Customization and explanation of the selected screen saver.</property>
- <property name="can_default">True</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">_Settings...</property>
- <property name="use_underline">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <signal handler="settings_cb" name="clicked"/>
- </object>
- </child>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="x_options">fill</property>
- <property name="y_options">fill</property>
- </packing>
- </child>
- <child>
- <object class="GtkVBox" id="list_vbox">
- <property name="border_width">10</property>
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">0</property>
- <child>
- <object class="GtkHBox" id="mode_hbox">
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">0</property>
- <child>
- <object class="GtkLabel" id="mode_label">
- <property name="visible">True</property>
- <property name="label" translatable="yes">_Mode:</property>
- <property name="use_underline">True</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="mnemonic_widget">mode_menu</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- <accessibility>
- <relation target="mode_menu" type="label-for"/>
- </accessibility>
- </object>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- <child>
- <object class="GtkComboBox" id="mode_menu">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="has_entry">False</property>
- <property name="model">mode_menu_model</property>
- <accessibility>
- <relation target="mode_label" type="labelled-by"/>
- </accessibility>
- <child>
- <object class="GtkCellRendererText" id="renderer1"/>
- <attributes>
- <attribute name="text">0</attribute>
- </attributes>
- </child>
- </object>
- <packing>
- <property name="padding">4</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="padding">10</property>
- <property name="expand">False</property>
- <property name="fill">True</property>
- </packing>
- </child>
- <child>
- <object class="GtkScrolledWindow" id="scroller">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
- <property name="vscrollbar_policy">GTK_POLICY_ALWAYS</property>
- <property name="shadow_type">GTK_SHADOW_IN</property>
- <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
- <child>
- <object class="GtkTreeView" id="list">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="headers_visible">False</property>
- <property name="rules_hint">True</property>
- <property name="reorderable">False</property>
- <property name="enable_search">True</property>
- <property name="fixed_height_mode">False</property>
- <property name="hover_selection">False</property>
- <property name="hover_expand">False</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="padding">0</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
- </packing>
- </child>
- <child>
- <object class="GtkHBox" id="centering_hbox">
- <property name="visible">True</property>
- <property name="homogeneous">True</property>
- <property name="spacing">0</property>
- <child>
- <object class="GtkHBox" id="next_prev_hbox">
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">0</property>
- <child>
- <object class="GtkButton" id="next">
- <property name="visible">True</property>
- <property name="tooltip-text" translatable="yes">Run the next screen saver in the list in full-screen mode (click the mouse to return.)</property>
- <property name="can_focus">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <signal handler="run_next_cb" name="clicked"/>
- <child>
- <object class="GtkArrow" id="arrow1">
- <property name="visible">True</property>
- <property name="arrow_type">GTK_ARROW_DOWN</property>
- <property name="shadow_type">GTK_SHADOW_OUT</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- <child>
- <object class="GtkButton" id="prev">
- <property name="visible">True</property>
- <property name="tooltip-text" translatable="yes">Run the previous screen saver in the list in full-screen mode (click the mouse to return.)</property>
- <property name="can_focus">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <signal handler="run_prev_cb" name="clicked"/>
- <child>
- <object class="GtkArrow" id="arrow2">
- <property name="visible">True</property>
- <property name="arrow_type">GTK_ARROW_UP</property>
- <property name="shadow_type">GTK_SHADOW_OUT</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="pack_type">GTK_PACK_END</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="right_attach">1</property>
- <property name="top_attach">0</property>
- <property name="bottom_attach">1</property>
- <property name="x_options">fill</property>
- </packing>
- </child>
- <child>
- <object class="GtkFrame" id="preview_frame">
- <property name="visible">True</property>
- <property name="label_xalign">0</property>
- <property name="label_yalign">0.5</property>
- <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
- <accessibility>
- <relation target="label1" type="labelled-by"/>
- </accessibility>
- <child>
- <object class="GtkVBox" id="preview_vbox">
- <property name="border_width">5</property>
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">5</property>
- <child>
- <object class="GtkNotebook" id="preview_notebook">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="show_tabs">True</property>
- <property name="show_border">False</property>
- <property name="tab_pos">GTK_POS_BOTTOM</property>
- <property name="scrollable">False</property>
- <property name="enable_popup">False</property>
- <child>
- <object class="GtkAspectFrame" id="preview_aspectframe">
- <property name="border_width">8</property>
- <property name="visible">True</property>
- <property name="label_xalign">0</property>
- <property name="label_yalign">0.5</property>
- <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="ratio">1.777777</property>
- <property name="obey_child">False</property>
- <child>
- <object class="GtkDrawingArea" id="preview">
- <property name="visible">True</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="tab_expand">False</property>
- <property name="tab_fill">True</property>
- </packing>
- </child>
- <child type="tab">
- <object class="GtkLabel" id="preview_tab">
- <property name="visible">True</property>
- <property name="label" translatable="yes">preview</property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </object>
- </child>
- <child>
- <object class="GtkLabel" id="no_preview_label">
- <property name="visible">True</property>
- <property name="label" translatable="yes">No Preview
-Available</property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_CENTER</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </object>
- <packing>
- <property name="tab_expand">False</property>
- <property name="tab_fill">True</property>
- </packing>
- </child>
- <child type="tab">
- <object class="GtkLabel" id="no_preview_tab">
- <property name="visible">True</property>
- <property name="label" translatable="yes">no preview</property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </object>
- </child>
- <child>
- <object class="GtkLabel" id="not_installed_label">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Not
-Installed</property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_CENTER</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </object>
- <packing>
- <property name="tab_expand">False</property>
- <property name="tab_fill">True</property>
- </packing>
- </child>
- <child type="tab">
- <object class="GtkLabel" id="not_installed_tab">
- <property name="visible">True</property>
- <property name="label" translatable="yes">not installed</property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </object>
- </child>
- <child>
- <object class="GtkLabel" id="nothing_label">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Very few (or no) screen savers appear to be available.
-
-This probably means that the "xscreensaver-extras" and
-"xscreensaver-gl-extras" packages are not installed.</property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_CENTER</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </object>
- <packing>
- <property name="tab_expand">False</property>
- <property name="tab_fill">True</property>
- </packing>
- </child>
- <child type="tab">
- <object class="GtkLabel" id="nothing_tab">
- <property name="visible">True</property>
- <property name="label" translatable="yes">nothing</property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </object>
- </child>
- </object>
- </child>
-
- <child>
- <object class="GtkLabel" id="short_preview_label">
- <property name="visible">True</property>
- <property name="label" translatable="yes"></property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">True</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.0</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">72</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- <accessibility>
- <relation target="preview_aspectframe" type="label-for"/>
- </accessibility>
- </object>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">True</property>
- </packing>
- </child>
-
- <child>
- <object class="GtkLabel" id="preview_author_label">
- <property name="visible">True</property>
- <property name="label" translatable="yes"></property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_CENTER</property>
- <property name="wrap">True</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.0</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">72</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- <accessibility>
- <relation target="preview_aspectframe" type="label-for"/>
- </accessibility>
- </object>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">True</property>
- </packing>
- </child>
-
- </object>
- </child>
-
- <child type="label">
- <object class="GtkLabel" id="label1">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Description</property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- <accessibility>
- <relation target="preview_frame" type="label-for"/>
- </accessibility>
- </object>
- </child>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">0</property>
- <property name="bottom_attach">1</property>
- <property name="y_padding">6</property>
- <property name="x_options">expand|shrink|fill</property>
- <property name="y_options">expand|shrink|fill</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="tab_expand">False</property>
- <property name="tab_fill">True</property>
- </packing>
- </child>
- <child type="tab">
- <object class="GtkLabel" id="demo_tab">
- <property name="visible">True</property>
- <property name="label" translatable="yes">_Display Modes</property>
- <property name="use_underline">True</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_CENTER</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="mnemonic_widget">notebook</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </object>
- </child>
- <child>
- <object class="GtkTable" id="options_table">
- <property name="visible">True</property>
- <property name="n_rows">2</property>
- <property name="n_columns">2</property>
- <property name="homogeneous">True</property>
- <property name="row_spacing">0</property>
- <property name="column_spacing">0</property>
- <child>
- <object class="GtkFrame" id="grab_frame">
- <property name="border_width">10</property>
- <property name="visible">True</property>
- <property name="label_xalign">0</property>
- <property name="label_yalign">0.5</property>
- <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
- <accessibility>
- <relation target="label2" type="labelled-by"/>
- </accessibility>
- <child>
- <object class="GtkHBox" id="grab_hbox">
- <property name="border_width">8</property>
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">8</property>
- <child>
- <object class="GtkImage" id="image2">
- <property name="visible">True</property>
- <property name="pixbuf">screensaver-snap.png</property>
- <property name="xalign">0</property>
- <property name="yalign">0</property>
- <property name="xpad">4</property>
- <property name="ypad">8</property>
- </object>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- <child>
- <object class="GtkVBox" id="grab_vbox">
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">0</property>
- <child>
- <object class="GtkCheckButton" id="grab_desk_button">
- <property name="visible">True</property>
- <property name="tooltip-text" translatable="yes">Whether the image-manipulating modes should be allowed to operate on an image of your desktop.</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">Grab Desktop _Images</property>
- <property name="use_underline">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <property name="active">False</property>
- <property name="inconsistent">False</property>
- <property name="draw_indicator">True</property>
- <signal handler="pref_changed_cb" name="toggled"/>
- </object>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- <child>
- <object class="GtkCheckButton" id="grab_video_button">
- <property name="visible">True</property>
- <property name="tooltip-text" translatable="yes">Whether the image-manipulating modes should operate on images captured from the system's video input (if there is one.)</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">Grab _Video Frames</property>
- <property name="use_underline">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <property name="active">False</property>
- <property name="inconsistent">False</property>
- <property name="draw_indicator">True</property>
- <signal handler="pref_changed_cb" name="toggled"/>
- </object>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- <child>
- <object class="GtkCheckButton" id="grab_image_button">
- <property name="visible">True</property>
- <property name="tooltip-text" translatable="yes">Whether the image-manipulating modes should load image files.</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">Choose _Random Image:</property>
- <property name="use_underline">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <property name="active">False</property>
- <property name="inconsistent">False</property>
- <property name="draw_indicator">True</property>
- <accessibility>
- <relation target="image_text" type="controller-for"/>
- <relation target="image_browse_button" type="controller-for"/>
- </accessibility>
- <signal handler="pref_changed_cb" name="toggled"/>
- </object>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- <child>
- <object class="GtkHBox" id="image_hbox">
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">0</property>
- <child>
- <object class="GtkLabel" id="grab_dummy">
- <property name="visible">True</property>
- <property name="label" translatable="yes"/>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">8</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </object>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- <child>
- <object class="GtkEntry" id="image_text">
- <property name="visible">True</property>
- <property name="tooltip-text" translatable="yes">The local directory, RSS feed or Atom feed from which images will be randomly chosen.</property>
- <property name="can_focus">True</property>
- <property name="editable">True</property>
- <property name="visibility">True</property>
- <property name="max_length">0</property>
- <property name="text" translatable="yes"/>
- <property name="has_frame">True</property>
- <property name="invisible_char">*</property>
- <property name="activates_default">False</property>
- <accessibility>
- <relation target="grab_image_button" type="labelled-by"/>
- <relation target="grab_image_button" type="controlled-by"/>
- </accessibility>
- <signal handler="pref_changed_cb" name="activate"/>
- <signal handler="image_text_pref_changed_event_cb" name="focus_out_event"/>
- </object>
- <packing>
- <property name="padding">2</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
- </packing>
- </child>
- <child>
- <object class="GtkButton" id="image_browse_button">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">_Browse</property>
- <property name="use_underline">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <signal handler="browse_image_dir_cb" name="clicked"/>
- </object>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="label8">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Local directory, or URL of RSS or Atom feed.</property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0</property>
- <property name="yalign">0.5</property>
- <property name="xpad">20</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </object>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="padding">0</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
- </packing>
- </child>
- </object>
- </child>
- <child type="label">
- <object class="GtkLabel" id="label2">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Image Manipulation</property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- <accessibility>
- <relation target="grab_frame" type="label-for"/>
- </accessibility>
- </object>
- </child>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="right_attach">1</property>
- <property name="top_attach">0</property>
- <property name="bottom_attach">1</property>
- </packing>
- </child>
- <child>
- <object class="GtkFrame" id="diag_frame">
- <property name="border_width">10</property>
- <property name="visible">True</property>
- <property name="label_xalign">0</property>
- <property name="label_yalign">0.5</property>
- <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
- <accessibility>
- <relation target="label3" type="labelled-by"/>
- </accessibility>
- <child>
- <object class="GtkHBox" id="diag_hbox">
- <property name="border_width">8</property>
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">8</property>
- <child>
- <object class="GtkImage" id="diag_logo">
- <property name="visible">True</property>
- <property name="pixbuf">screensaver-diagnostic.png</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- </object>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- <child>
- <object class="GtkTable" id="text_table">
- <property name="visible">True</property>
- <property name="n_rows">5</property>
- <property name="n_columns">3</property>
- <property name="homogeneous">False</property>
- <property name="row_spacing">2</property>
- <property name="column_spacing">2</property>
- <child>
- <object class="GtkRadioButton" id="text_radio">
- <property name="visible">True</property>
- <property name="tooltip-text" translatable="yes">Text-displaying modes will display the text typed here.</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">_Text</property>
- <property name="use_underline">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <property name="active">False</property>
- <property name="inconsistent">False</property>
- <property name="draw_indicator">True</property>
- <accessibility>
- <relation target="text_entry" type="controller-for"/>
- <relation target="text_entry" type="label-for"/>
- </accessibility>
- <signal handler="pref_changed_cb" last_modification_time="Sun, 20 Mar 2005 21:31:44 GMT" name="toggled"/>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="right_attach">1</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="x_options">fill</property>
- <property name="y_options"/>
- </packing>
- </child>
- <child>
- <object class="GtkRadioButton" id="text_file_radio">
- <property name="visible">True</property>
- <property name="tooltip-text" translatable="yes">Text-displaying modes will display the contents of this file.</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">Text _file</property>
- <property name="use_underline">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <property name="active">False</property>
- <property name="inconsistent">False</property>
- <property name="draw_indicator">True</property>
- <property name="group">text_radio</property>
- <accessibility>
- <relation target="text_file_entry" type="label-for"/>
- <relation target="text_file_entry" type="controller-for"/>
- </accessibility>
- <signal handler="pref_changed_cb" last_modification_time="Sun, 20 Mar 2005 21:31:55 GMT" name="toggled"/>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="right_attach">1</property>
- <property name="top_attach">2</property>
- <property name="bottom_attach">3</property>
- <property name="x_options">fill</property>
- <property name="y_options"/>
- </packing>
- </child>
- <child>
- <object class="GtkRadioButton" id="text_program_radio">
- <property name="visible">True</property>
- <property name="tooltip-text" translatable="yes">Text-displaying modes will display the output of this program.</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">_Program</property>
- <property name="use_underline">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <property name="active">False</property>
- <property name="inconsistent">False</property>
- <property name="draw_indicator">True</property>
- <property name="group">text_radio</property>
- <accessibility>
- <relation target="text_program_entry" type="label-for"/>
- <relation target="text_program_entry" type="controller-for"/>
- <relation target="text_program_browse" type="controller-for"/>
- </accessibility>
- <signal handler="pref_changed_cb" last_modification_time="Sun, 20 Mar 2005 21:32:07 GMT" name="toggled"/>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="right_attach">1</property>
- <property name="top_attach">3</property>
- <property name="bottom_attach">4</property>
- <property name="x_options">fill</property>
- <property name="y_options"/>
- </packing>
- </child>
- <child>
- <object class="GtkRadioButton" id="text_url_radio">
- <property name="visible">True</property>
- <property name="tooltip-text" translatable="yes">Text-displaying modes will display the contents of this URL (HTML or RSS).</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">_URL</property>
- <property name="use_underline">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <property name="active">False</property>
- <property name="inconsistent">False</property>
- <property name="draw_indicator">True</property>
- <property name="group">text_radio</property>
- <accessibility>
- <relation target="text_url_entry" type="label-for"/>
- <relation target="text_url_entry" type="controller-for"/>
- </accessibility>
- <signal handler="pref_changed_cb" last_modification_time="Sun, 20 Mar 2005 21:32:17 GMT" name="toggled"/>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="right_attach">1</property>
- <property name="top_attach">4</property>
- <property name="bottom_attach">5</property>
- <property name="x_options">fill</property>
- <property name="y_options"/>
- </packing>
- </child>
- <child>
- <object class="GtkRadioButton" id="text_host_radio">
- <property name="visible">True</property>
- <property name="tooltip-text" translatable="yes">Text-displaying modes will display the local host name, date, and time.</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">_Host Name and Time</property>
- <property name="use_underline">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <property name="active">True</property>
- <property name="inconsistent">False</property>
- <property name="draw_indicator">True</property>
- <property name="group">text_radio</property>
- <signal handler="pref_changed_cb" last_modification_time="Sun, 20 Mar 2005 21:31:32 GMT" name="toggled"/>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="right_attach">3</property>
- <property name="top_attach">0</property>
- <property name="bottom_attach">1</property>
- <property name="x_options">fill</property>
- <property name="y_options"/>
- </packing>
- </child>
- <child>
- <object class="GtkEntry" id="text_url_entry">
- <property name="visible">True</property>
- <property name="tooltip-text" translatable="yes">Text-displaying modes will display the contents of this URL (HTML or RSS).</property>
- <property name="can_focus">True</property>
- <property name="editable">True</property>
- <property name="visibility">True</property>
- <property name="max_length">0</property>
- <property name="text" translatable="yes"/>
- <property name="has_frame">True</property>
- <property name="invisible_char">*</property>
- <property name="activates_default">False</property>
- <accessibility>
- <relation target="text_url_radio" type="controlled-by"/>
- </accessibility>
- <signal handler="pref_changed_cb" last_modification_time="Sun, 20 Mar 2005 21:33:10 GMT" name="activate"/>
- <signal handler="pref_changed_event_cb" last_modification_time="Sun, 20 Mar 2005 21:34:26 GMT" name="focus_out_event"/>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">3</property>
- <property name="top_attach">4</property>
- <property name="bottom_attach">5</property>
- <property name="y_options"/>
- </packing>
- </child>
- <child>
- <object class="GtkButton" id="text_file_browse">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">_Browse</property>
- <property name="use_underline">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <accessibility>
- <relation target="text_file_radio" type="controlled-by"/>
- </accessibility>
- <signal handler="browse_text_file_cb" last_modification_time="Sun, 20 Mar 2005 01:24:38 GMT" name="clicked"/>
- </object>
- <packing>
- <property name="left_attach">2</property>
- <property name="right_attach">3</property>
- <property name="top_attach">2</property>
- <property name="bottom_attach">3</property>
- <property name="x_options">fill</property>
- <property name="y_options"/>
- </packing>
- </child>
- <child>
- <object class="GtkEntry" id="text_entry">
- <property name="visible">True</property>
- <property name="tooltip-text" translatable="yes">Text-displaying modes will display the text typed here.</property>
- <property name="can_focus">True</property>
- <property name="editable">True</property>
- <property name="visibility">True</property>
- <property name="max_length">0</property>
- <property name="text" translatable="yes"/>
- <property name="has_frame">True</property>
- <property name="invisible_char">*</property>
- <property name="activates_default">False</property>
- <accessibility>
- <relation target="text_program_radio" type="labelled-by"/>
- <relation target="text_program_radio" type="controlled-by"/>
- </accessibility>
- <signal handler="pref_changed_cb" last_modification_time="Sun, 20 Mar 2005 21:32:42 GMT" name="activate"/>
- <signal handler="pref_changed_event_cb" last_modification_time="Sun, 20 Mar 2005 21:33:43 GMT" name="focus_out_event"/>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">3</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="y_options"/>
- </packing>
- </child>
- <child>
- <object class="GtkEntry" id="text_program_entry">
- <property name="visible">True</property>
- <property name="tooltip-text" translatable="yes">Text-displaying modes will display the output of this program.</property>
- <property name="can_focus">True</property>
- <property name="editable">True</property>
- <property name="visibility">True</property>
- <property name="max_length">0</property>
- <property name="text" translatable="yes"/>
- <property name="has_frame">True</property>
- <property name="invisible_char">*</property>
- <property name="activates_default">False</property>
- <accessibility>
- <relation target="text_program_radio" type="labelled-by"/>
- <relation target="text_program_radio" type="controlled-by"/>
- </accessibility>
- <signal handler="pref_changed_cb" last_modification_time="Sun, 20 Mar 2005 21:33:02 GMT" name="activate"/>
- <signal handler="pref_changed_event_cb" last_modification_time="Sun, 20 Mar 2005 21:34:15 GMT" name="focus_out_event"/>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">3</property>
- <property name="bottom_attach">4</property>
- <property name="y_options"/>
- </packing>
- </child>
- <child>
- <object class="GtkButton" id="text_program_browse">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">_Browse</property>
- <property name="use_underline">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <accessibility>
- <relation target="text_program_radio" type="controller-for"/>
- </accessibility>
- <signal handler="browse_text_program_cb" last_modification_time="Sun, 20 Mar 2005 01:24:51 GMT" name="clicked"/>
- </object>
- <packing>
- <property name="left_attach">2</property>
- <property name="right_attach">3</property>
- <property name="top_attach">3</property>
- <property name="bottom_attach">4</property>
- <property name="x_options">fill</property>
- <property name="y_options"/>
- </packing>
- </child>
- <child>
- <object class="GtkEntry" id="text_file_entry">
- <property name="visible">True</property>
- <property name="tooltip-text" translatable="yes">Text-displaying modes will display the contents of this file.</property>
- <property name="can_focus">True</property>
- <property name="editable">True</property>
- <property name="visibility">True</property>
- <property name="max_length">0</property>
- <property name="text" translatable="yes"/>
- <property name="has_frame">True</property>
- <property name="invisible_char">*</property>
- <property name="activates_default">False</property>
- <accessibility>
- <relation target="text_file_radio" type="labelled-by"/>
- <relation target="text_file_radio" type="controlled-by"/>
- </accessibility>
- <signal handler="pref_changed_cb" last_modification_time="Sun, 20 Mar 2005 21:32:53 GMT" name="activate"/>
- <signal handler="pref_changed_event_cb" last_modification_time="Sun, 20 Mar 2005 21:33:55 GMT" name="focus_out_event"/>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">2</property>
- <property name="bottom_attach">3</property>
- <property name="y_options"/>
- </packing>
- </child>
- </object>
- <packing>
- <property name="padding">0</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
- </packing>
- </child>
- </object>
- </child>
- <child type="label">
- <object class="GtkLabel" id="label3">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Text Manipulation</property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- <accessibility>
- <relation target="diag_frame" type="label-for"/>
- </accessibility>
- </object>
- </child>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="right_attach">1</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="x_options">fill</property>
- </packing>
- </child>
- <child>
- <object class="GtkFrame" id="dpms_frame">
- <property name="border_width">10</property>
- <property name="visible">True</property>
- <property name="label_xalign">0</property>
- <property name="label_yalign">0.5</property>
- <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
- <child>
- <object class="GtkHBox" id="dpms_hbox">
- <property name="border_width">8</property>
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">8</property>
- <child>
- <object class="GtkImage" id="dpms_logo">
- <property name="visible">True</property>
- <property name="pixbuf">screensaver-power.png</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- </object>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- <child>
- <object class="GtkVBox" id="vbox6">
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">0</property>
- <child>
- <object class="GtkCheckButton" id="dpms_button">
- <property name="visible">True</property>
- <property name="tooltip-text" translatable="yes">Whether the monitor should be powered down after a while.</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">_Power Management Enabled</property>
- <property name="use_underline">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <property name="active">True</property>
- <property name="inconsistent">False</property>
- <property name="draw_indicator">True</property>
- <accessibility>
- <relation target="dpms_suspend_spinbutton" type="controller-for"/>
- <relation target="dpms_standby_spinbutton" type="controller-for"/>
- <relation target="dpms_off_spinbutton" type="controller-for"/>
- </accessibility>
- <signal handler="pref_changed_cb" name="toggled"/>
- </object>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- <child>
- <object class="GtkTable" id="dpms_table">
- <property name="visible">True</property>
- <property name="n_rows">3</property>
- <property name="n_columns">3</property>
- <property name="homogeneous">False</property>
- <property name="row_spacing">2</property>
- <property name="column_spacing">4</property>
- <child>
- <object class="GtkLabel" id="dpms_standby_label">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Stand_by After</property>
- <property name="use_underline">True</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">1</property>
- <property name="yalign">0.5</property>
- <property name="xpad">10</property>
- <property name="ypad">0</property>
- <property name="mnemonic_widget">dpms_standby_spinbutton</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- <accessibility>
- <relation target="dpms_standby_spinbutton" type="label-for"/>
- <relation target="dpms_standby_spinbutton" type="flows-to"/>
- </accessibility>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="right_attach">1</property>
- <property name="top_attach">0</property>
- <property name="bottom_attach">1</property>
- <property name="x_options">fill</property>
- <property name="y_options"/>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="dpms_suspend_label">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Sus_pend After</property>
- <property name="use_underline">True</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">1</property>
- <property name="yalign">0.5</property>
- <property name="xpad">10</property>
- <property name="ypad">0</property>
- <property name="mnemonic_widget">dpms_suspend_spinbutton</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- <accessibility>
- <relation target="dpms_suspend_spinbutton" type="label-for"/>
- <relation target="dpms_suspend_spinbutton" type="flows-to"/>
- </accessibility>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="right_attach">1</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="x_options">fill</property>
- <property name="y_options"/>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="dpms_off_label">
- <property name="visible">True</property>
- <property name="label" translatable="yes">_Off After</property>
- <property name="use_underline">True</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">1</property>
- <property name="yalign">0.5</property>
- <property name="xpad">10</property>
- <property name="ypad">0</property>
- <property name="mnemonic_widget">dpms_off_spinbutton</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- <accessibility>
- <relation target="dpms_off_spinbutton" type="label-for"/>
- <relation target="dpms_off_spinbutton" type="flows-to"/>
- </accessibility>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="right_attach">1</property>
- <property name="top_attach">2</property>
- <property name="bottom_attach">3</property>
- <property name="x_options">fill</property>
- <property name="y_options"/>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="dpms_standby_mlabel">
- <property name="visible">True</property>
- <property name="label" translatable="yes">minutes</property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- <accessibility>
- <relation target="dpms_standby_spinbutton" type="label-for"/>
- <relation target="dpms_standby_spinbutton" type="flows-from"/>
- </accessibility>
- </object>
- <packing>
- <property name="left_attach">2</property>
- <property name="right_attach">3</property>
- <property name="top_attach">0</property>
- <property name="bottom_attach">1</property>
- <property name="x_options">fill</property>
- <property name="y_options"/>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="dpms_suspend_mlabel">
- <property name="visible">True</property>
- <property name="label" translatable="yes">minutes</property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- <accessibility>
- <relation target="dpms_suspend_spinbutton" type="label-for"/>
- <relation target="dpms_suspend_spinbutton" type="flows-from"/>
- </accessibility>
- </object>
- <packing>
- <property name="left_attach">2</property>
- <property name="right_attach">3</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="x_options">fill</property>
- <property name="y_options"/>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="dpms_off_mlabel">
- <property name="visible">True</property>
- <property name="label" translatable="yes">minutes</property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- <accessibility>
- <relation target="dpms_off_spinbutton" type="label-for"/>
- <relation target="dpms_off_spinbutton" type="flows-from"/>
- </accessibility>
- </object>
- <packing>
- <property name="left_attach">2</property>
- <property name="right_attach">3</property>
- <property name="top_attach">2</property>
- <property name="bottom_attach">3</property>
- <property name="x_options">fill</property>
- <property name="y_options"/>
- </packing>
- </child>
- <child>
- <object class="GtkSpinButton" id="dpms_off_spinbutton">
- <property name="visible">True</property>
- <property name="tooltip-text" translatable="yes">How long until the monitor powers down.</property>
- <property name="can_focus">True</property>
- <property name="climb_rate">15</property>
- <property name="digits">0</property>
- <property name="numeric">True</property>
- <property name="update_policy">GTK_UPDATE_ALWAYS</property>
- <property name="snap_to_ticks">True</property>
- <property name="wrap">False</property>
- <property name="adjustment">adjustment4</property>
- <accessibility>
- <relation target="dpms_button" type="controlled-by"/>
- <relation target="dpms_off_label" type="labelled-by"/>
- <relation target="dpms_off_mlabel" type="labelled-by"/>
- <relation target="dpms_off_label" type="flows-from"/>
- <relation target="dpms_off_mlabel" type="flows-to"/>
- </accessibility>
- <signal handler="pref_changed_cb" name="activate"/>
- <signal handler="pref_changed_event_cb" name="focus_out_event"/>
- <signal handler="pref_changed_cb" name="value_changed"/>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">2</property>
- <property name="bottom_attach">3</property>
- <property name="x_options"/>
- <property name="y_options"/>
- </packing>
- </child>
- <child>
- <object class="GtkSpinButton" id="dpms_suspend_spinbutton">
- <property name="visible">True</property>
- <property name="tooltip-text" translatable="yes">How long until the monitor goes into power-saving mode.</property>
- <property name="can_focus">True</property>
- <property name="climb_rate">15</property>
- <property name="digits">0</property>
- <property name="numeric">True</property>
- <property name="update_policy">GTK_UPDATE_ALWAYS</property>
- <property name="snap_to_ticks">True</property>
- <property name="wrap">False</property>
- <property name="adjustment">adjustment5</property>
- <accessibility>
- <relation target="dpms_button" type="controlled-by"/>
- <relation target="dpms_suspend_label" type="labelled-by"/>
- <relation target="dpms_suspend_mlabel" type="labelled-by"/>
- <relation target="dpms_suspend_label" type="flows-from"/>
- <relation target="dpms_suspend_mlabel" type="flows-to"/>
- </accessibility>
- <signal handler="pref_changed_cb" name="activate"/>
- <signal handler="pref_changed_event_cb" name="focus_out_event"/>
- <signal handler="pref_changed_cb" name="value_changed"/>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="x_options"/>
- <property name="y_options"/>
- </packing>
- </child>
- <child>
- <object class="GtkSpinButton" id="dpms_standby_spinbutton">
- <property name="visible">True</property>
- <property name="tooltip-text" translatable="yes">How long until the monitor goes completely black.</property>
- <property name="can_focus">True</property>
- <property name="climb_rate">15</property>
- <property name="digits">0</property>
- <property name="numeric">True</property>
- <property name="update_policy">GTK_UPDATE_ALWAYS</property>
- <property name="snap_to_ticks">True</property>
- <property name="wrap">False</property>
- <property name="adjustment">adjustment6</property>
- <accessibility>
- <relation target="dpms_button" type="controlled-by"/>
- <relation target="dpms_standby_label" type="labelled-by"/>
- <relation target="dpms_standby_mlabel" type="labelled-by"/>
- <relation target="dpms_standby_label" type="flows-from"/>
- <relation target="dpms_standby_mlabel" type="flows-to"/>
- </accessibility>
- <signal handler="pref_changed_cb" name="activate"/>
- <signal handler="pref_changed_event_cb" name="focus_out_event"/>
- <signal handler="pref_changed_cb" name="value_changed"/>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">0</property>
- <property name="bottom_attach">1</property>
- <property name="x_options"/>
- <property name="y_options"/>
- </packing>
- </child>
- </object>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">True</property>
- </packing>
- </child>
- <child>
- <object class="GtkCheckButton" id="dpms_quickoff_button">
- <property name="visible">True</property>
- <property name="tooltip-text" translatable="yes">Whether the monitor should be powered off immediately in "Blank Screen Only" mode, regardless of the above power-management timeouts.</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">_Quick Power-off in Blank Only Mode</property>
- <property name="use_underline">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <property name="active">False</property>
- <property name="inconsistent">False</property>
- <property name="draw_indicator">True</property>
- <signal handler="pref_changed_cb" name="toggled"/>
- </object>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="padding">0</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
- </packing>
- </child>
- </object>
- </child>
- <child type="label">
- <object class="GtkLabel" id="label4">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Display Power Management</property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- <accessibility>
- <relation target="dpms_frame" type="label-for"/>
- </accessibility>
- </object>
- </child>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">0</property>
- <property name="bottom_attach">1</property>
- <property name="y_options">fill</property>
- </packing>
- </child>
- <child>
- <object class="GtkFrame" id="blanking_frame">
- <property name="border_width">10</property>
- <property name="visible">True</property>
- <property name="label_xalign">0</property>
- <property name="label_yalign">0.5</property>
- <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
- <accessibility>
- <relation target="label5" type="labelled-by"/>
- </accessibility>
- <child>
- <object class="GtkHBox" id="fading_hbox">
- <property name="border_width">8</property>
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">8</property>
- <child>
- <object class="GtkImage" id="image5">
- <property name="visible">True</property>
- <property name="pixbuf">screensaver-colorselector.png</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- </object>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- <child>
- <object class="GtkVBox" id="vbox7">
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">0</property>
- <child>
- <object class="GtkCheckButton" id="fade_button">
- <property name="visible">True</property>
- <property name="tooltip-text" translatable="yes">Whether the screen should slowly fade to black when the screen saver activates.</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">Fade to Black when _Blanking</property>
- <property name="use_underline">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <property name="active">False</property>
- <property name="inconsistent">False</property>
- <property name="draw_indicator">True</property>
- <accessibility>
- <relation target="fade_spinbutton" type="controller-for"/>
- </accessibility>
- <signal handler="pref_changed_cb" name="toggled"/>
- </object>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- <child>
- <object class="GtkCheckButton" id="unfade_button">
- <property name="visible">True</property>
- <property name="tooltip-text" translatable="yes">Whether the screen should slowly fade in from black when the screen saver deactivates.</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">Fade from Black When _Unblanking</property>
- <property name="use_underline">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <property name="active">False</property>
- <property name="inconsistent">False</property>
- <property name="draw_indicator">True</property>
- <accessibility>
- <relation target="fade_spinbutton" type="controller-for"/>
- </accessibility>
- <signal handler="pref_changed_cb" name="toggled"/>
- </object>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- <child>
- <object class="GtkHBox" id="fade_hbox">
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">0</property>
- <child>
- <object class="GtkLabel" id="fade_dummy">
- <property name="visible">True</property>
- <property name="label" translatable="yes"/>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">3</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </object>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="fade_label">
- <property name="visible">True</property>
- <property name="label" translatable="yes">F_ade Duration</property>
- <property name="use_underline">True</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="mnemonic_widget">fade_spinbutton</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- <accessibility>
- <relation target="fade_spinbutton" type="label-for"/>
- <relation target="fade_spinbutton" type="flows-to"/>
- </accessibility>
- </object>
- <packing>
- <property name="padding">14</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- <child>
- <object class="GtkSpinButton" id="fade_spinbutton">
- <property name="visible">True</property>
- <property name="tooltip-text" translatable="yes">How long it should take for the screen to fade in and out.</property>
- <property name="can_focus">True</property>
- <property name="climb_rate">1</property>
- <property name="digits">0</property>
- <property name="numeric">True</property>
- <property name="update_policy">GTK_UPDATE_ALWAYS</property>
- <property name="snap_to_ticks">True</property>
- <property name="wrap">False</property>
- <property name="adjustment">adjustment7</property>
- <accessibility>
- <relation target="unfade_button" type="controlled-by"/>
- <relation target="fade_button" type="controlled-by"/>
- <relation target="fade_label" type="labelled-by"/>
- <relation target="fade_sec_label" type="labelled-by"/>
- <relation target="fade_label" type="flows-from"/>
- <relation target="fade_sec_label" type="flows-to"/>
- </accessibility>
- <signal handler="pref_changed_cb" name="activate"/>
- <signal handler="pref_changed_event_cb" name="focus_out_event"/>
- <signal handler="pref_changed_cb" name="value_changed"/>
- </object>
- <packing>
- <property name="padding">4</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="fade_sec_label">
- <property name="visible">True</property>
- <property name="label" translatable="yes">seconds</property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- <accessibility>
- <relation target="fade_spinbutton" type="label-for"/>
- <relation target="fade_spinbutton" type="flows-from"/>
- </accessibility>
- </object>
- <packing>
- <property name="padding">2</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- <child>
- <object class="GtkHSeparator" id="blanking_hr">
- <property name="visible">True</property>
- </object>
- <packing>
- <property name="padding">8</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
-
-
- <child>
- <object class="GtkHBox" id="theme_hbox">
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">0</property>
- <child>
- <object class="GtkLabel" id="theme_label">
- <property name="visible">True</property>
- <property name="label" translatable="yes">_Theme:</property>
- <property name="tooltip-text" translatable="yes">The color scheme to use on the unlock dialog.</property>
- <property name="use_underline">True</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="mnemonic_widget">theme_menu</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- <accessibility>
- <relation target="theme_menu" type="label-for"/>
- </accessibility>
- </object>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- <child>
- <object class="GtkComboBox" id="theme_menu">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="has_entry">False</property>
- <property name="model">theme_menu_model</property>
- <accessibility>
- <relation target="theme_label" type="labelled-by"/>
- </accessibility>
- <child>
- <object class="GtkCellRendererText" id="renderer2"/>
- <attributes>
- <attribute name="text">0</attribute>
- </attributes>
- </child>
- </object>
- <packing>
- <property name="padding">4</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
- </packing>
- </child>
- <child>
- <object class="GtkButton" id="theme_preview">
- <property name="visible">True</property>
- <property name="tooltip-text" translatable="yes">Show the what the unlock dialog will look like.</property>
- <property name="can_default">True</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">_Preview</property>
- <property name="use_underline">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <signal handler="preview_theme_cb" name="clicked"/>
- </object>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="padding">10</property>
- <property name="expand">False</property>
- <property name="fill">True</property>
- </packing>
- </child>
-
-
-
- </object>
- <packing>
- <property name="padding">0</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
- </packing>
- </child>
- </object>
- </child>
- <child type="label">
- <object class="GtkLabel" id="label5">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Blanking</property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- <accessibility>
- <relation target="blanking_frame" type="label-for"/>
- </accessibility>
- </object>
- </child>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="x_options">fill</property>
- <property name="y_options">fill</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="tab_expand">False</property>
- <property name="tab_fill">True</property>
- </packing>
- </child>
- <child type="tab">
- <object class="GtkLabel" id="options_tab">
- <property name="visible">True</property>
- <property name="label" translatable="yes">_Advanced</property>
- <property name="use_underline">True</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="mnemonic_widget">notebook</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="padding">0</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="padding">0</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
- </packing>
- </child>
- <child>
- <object class="GtkHButtonBox" id="hbuttonbox2">
- <property name="border_width">5</property>
- <property name="layout_style">GTK_BUTTONBOX_EDGE</property>
- <property name="spacing">10</property>
- <child>
- <object class="GtkButton" id="helpbutton">
- <property name="visible">True</property>
- <property name="can_default">True</property>
- <property name="can_focus">True</property>
- <property name="label">gtk-help</property>
- <property name="use_stock">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <signal handler="doc_menu_cb" name="clicked"/>
- </object>
- </child>
- <child>
- <object class="GtkButton" id="closebutton">
- <property name="visible">True</property>
- <property name="can_default">True</property>
- <property name="can_focus">True</property>
- <property name="label">gtk-close</property>
- <property name="use_stock">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <signal handler="exit_menu_cb" name="clicked"/>
- </object>
- </child>
- </object>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="pack_type">GTK_PACK_END</property>
- </packing>
- </child>
- </object>
- </child>
- </object>
- <object class="GtkDialog" id="xscreensaver_settings_dialog">
- <property name="title" translatable="yes">dialog1</property>
- <property name="type">GTK_WINDOW_TOPLEVEL</property>
- <property name="window_position">GTK_WIN_POS_NONE</property>
- <property name="modal">False</property>
- <property name="resizable">True</property>
- <property name="destroy_with_parent">False</property>
- <property name="decorated">True</property>
- <property name="skip_taskbar_hint">False</property>
- <property name="skip_pager_hint">False</property>
- <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
- <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
- <property name="focus_on_map">True</property>
- <property name="urgency_hint">False</property>
- <property name="has_separator">False</property>
- <child internal-child="vbox">
- <object class="GtkVBox" id="dialog_vbox">
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">0</property>
- <child internal-child="action_area">
- <object class="GtkHButtonBox" id="dialog_action_area">
- <property name="visible">True</property>
- <property name="layout_style">GTK_BUTTONBOX_END</property>
- <child>
- <object class="GtkButton" id="adv_button">
- <property name="visible">True</property>
- <property name="can_default">True</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">_Advanced >></property>
- <property name="use_underline">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <signal handler="settings_adv_cb" name="clicked"/>
- </object>
- </child>
- <child>
- <object class="GtkButton" id="std_button">
- <property name="visible">True</property>
- <property name="can_default">True</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">_Standard <<</property>
- <property name="use_underline">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <signal handler="settings_std_cb" name="clicked"/>
- </object>
- </child>
- <child>
- <object class="GtkButton" id="reset_button">
- <property name="visible">True</property>
- <property name="can_default">True</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">_Reset to Defaults</property>
- <property name="use_underline">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <signal handler="settings_reset_cb" name="clicked"/>
- </object>
- </child>
- <child>
- <object class="GtkButton" id="cancel_button">
- <property name="visible">True</property>
- <property name="can_default">True</property>
- <property name="can_focus">True</property>
- <property name="label">gtk-cancel</property>
- <property name="use_stock">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <signal handler="settings_cancel_cb" name="clicked"/>
- </object>
- </child>
- <child>
- <object class="GtkButton" id="ok_button">
- <property name="visible">True</property>
- <property name="can_default">True</property>
- <property name="can_focus">True</property>
- <property name="label">gtk-ok</property>
- <property name="use_stock">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <signal handler="settings_ok_cb" name="clicked"/>
- </object>
- </child>
- </object>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="pack_type">GTK_PACK_END</property>
- </packing>
- </child>
- <child>
- <object class="GtkVBox" id="vbox1">
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">0</property>
- <child>
- <object class="GtkFrame" id="opt_frame">
- <property name="visible">True</property>
- <property name="label_xalign">0</property>
- <property name="label_yalign">0</property>
- <property name="shadow_type">GTK_SHADOW_ETCHED_IN</property>
- <accessibility>
- <relation target="label6" type="labelled-by"/>
- </accessibility>
- <child>
- <object class="GtkNotebook" id="opt_notebook">
- <property name="border_width">12</property>
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="show_tabs">True</property>
- <property name="show_border">False</property>
- <property name="tab_pos">GTK_POS_BOTTOM</property>
- <property name="scrollable">False</property>
- <property name="enable_popup">False</property>
- <signal handler="settings_switch_page_cb" name="switch_page"/>
- <child>
- <object class="GtkVBox" id="settings_vbox">
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">0</property>
- <child>
- <placeholder/>
- </child>
- </object>
- <packing>
- <property name="tab_expand">True</property>
- <property name="tab_fill">True</property>
- <property name="tab_pack">GTK_PACK_END</property>
- </packing>
- </child>
- <child type="tab">
- <object class="GtkLabel" id="std_label">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Standard</property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </object>
- </child>
- <child>
- <object class="GtkTable" id="adv_table">
- <property name="visible">True</property>
- <property name="n_rows">4</property>
- <property name="n_columns">2</property>
- <property name="homogeneous">False</property>
- <property name="row_spacing">0</property>
- <property name="column_spacing">0</property>
- <child>
- <object class="GtkImage" id="cmd_logo">
- <property name="visible">True</property>
- <property name="pixbuf">screensaver-cmndln.png</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">4</property>
- <property name="ypad">8</property>
- </object>
- <packing>
- <property name="left_attach">0</property>
- <property name="right_attach">1</property>
- <property name="top_attach">0</property>
- <property name="bottom_attach">1</property>
- <property name="x_options">fill</property>
- <property name="y_options">fill</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="cmd_label">
- <property name="visible">True</property>
- <property name="label" translatable="yes">_Command Line:</property>
- <property name="use_underline">True</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="mnemonic_widget">cmd_text</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- <accessibility>
- <relation target="cmd_text" type="label-for"/>
- </accessibility>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="x_options">fill</property>
- <property name="y_options"/>
- </packing>
- </child>
- <child>
- <object class="GtkEntry" id="cmd_text">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="editable">True</property>
- <property name="visibility">True</property>
- <property name="max_length">0</property>
- <property name="text" translatable="yes"/>
- <property name="has_frame">True</property>
- <property name="invisible_char">*</property>
- <property name="activates_default">False</property>
- <accessibility>
- <relation target="cmd_label" type="labelled-by"/>
- </accessibility>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">2</property>
- <property name="bottom_attach">3</property>
- <property name="y_options"/>
- </packing>
- </child>
- <child>
- <object class="GtkHBox" id="visual_hbox">
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">0</property>
- <child>
- <object class="GtkLabel" id="visual">
- <property name="visible">True</property>
- <property name="label" translatable="yes">_Visual:</property>
- <property name="use_underline">True</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">1</property>
- <property name="yalign">0.5</property>
- <property name="xpad">3</property>
- <property name="ypad">0</property>
- <property name="mnemonic_widget">visual_combo</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- <accessibility>
- <relation target="visual_combo" type="label-for"/>
- </accessibility>
- </object>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- <child>
- <object class="GtkComboBoxEntry" id="visual_combo">
- <property name="has_entry">False</property>
- <property name="visible">True</property>
- <property name="model">visual_combo_model</property>
- <property name="text-column">0</property>
- <accessibility>
- <relation target="visual" type="labelled-by"/>
- </accessibility>
- <child internal-child="entry">
- <object class="GtkEntry" id="visual_entry">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="editable">True</property>
- <property name="visibility">True</property>
- <property name="max_length">0</property>
- <property name="text" translatable="yes"/>
- <property name="has_frame">True</property>
- <property name="invisible_char">*</property>
- <property name="activates_default">False</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
- <property name="top_attach">3</property>
- <property name="bottom_attach">4</property>
- <property name="x_options">fill</property>
- <property name="y_options">fill</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="tab_expand">False</property>
- <property name="tab_fill">True</property>
- </packing>
- </child>
- <child type="tab">
- <object class="GtkLabel" id="adv_label">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Advanced</property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </object>
- </child>
- </object>
- </child>
- <child type="label">
- <object class="GtkLabel" id="label6">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Settings</property>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- <accessibility>
- <relation target="opt_frame" type="label-for"/>
- </accessibility>
- </object>
- </child>
- </object>
- <packing>
- <property name="padding">5</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
- </packing>
- </child>
- <child>
- <object class="GtkFrame" id="doc_frame">
- <property name="visible">True</property>
- <property name="label_xalign">0</property>
- <property name="label_yalign">0</property>
- <property name="shadow_type">GTK_SHADOW_NONE</property>
- <child>
- <object class="GtkVBox" id="doc_vbox">
- <property name="border_width">5</property>
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">5</property>
- <child>
- <object class="GtkLabel" id="doc">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes"/>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">True</property>
- <property name="selectable">True</property>
- <property name="xalign">0</property>
- <property name="yalign">0</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </object>
- <packing>
- <property name="padding">0</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
- </packing>
- </child>
- <child>
- <object class="GtkHBox" id="hbox1">
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">0</property>
- <child>
- <object class="GtkButton" id="manual">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">_Documentation...</property>
- <property name="use_underline">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <signal handler="manual_cb" name="clicked"/>
- </object>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="pack_type">GTK_PACK_END</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- </object>
- </child>
- <child type="label">
- <object class="GtkLabel" id="label7">
- <property name="visible">True</property>
- <property name="label" translatable="yes"/>
- <property name="use_underline">False</property>
- <property name="use_markup">False</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0.5</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
- <property name="width_chars">-1</property>
- <property name="single_line_mode">False</property>
- <property name="angle">0</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
- </object>
- <packing>
- <property name="padding">0</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
- </packing>
- </child>
- </object>
- </child>
- <action-widgets>
- <action-widget response="0">adv_button</action-widget>
- <action-widget response="0">std_button</action-widget>
- <action-widget response="0">reset_button</action-widget>
- <action-widget response="-6">cancel_button</action-widget>
- <action-widget response="-5">ok_button</action-widget>
- </action-widgets>
- </object>
-</interface>
abstractile \- draw abstract mosaic patterns of interlocking tiles
.SH SYNOPSIS
.B abstractile
-[\-sleep \fIseconds\fP] [\-speed \fIint\fP] [\-tile \fItile_mode\fP]
-[\-fps]
+[\-\-sleep \fIseconds\fP]
+[\-\-speed \fIint\fP]
+[\-\-tile \fItile_mode\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-fps]
.SH DESCRIPTION
The \fIabstractile\fP program draws chaotic grids of randomly colored
and shaped interlocking tiles.
.I abstractile
accepts the following options:
.TP 8
-.B \-sleep \fIseconds\fP
+.B \-\-sleep \fIseconds\fP
Specify the number of seconds to sleep between screens (0-60).
.TP 8
-.B \-speed \fIint\fP
+.B \-\-speed \fIint\fP
A value between 0 and 5 used to specify the speed at which each screen is drawn.
.TP 8
-.B \-tile \fItile_mode\fP
+.B \-\-tile \fItile_mode\fP
The type of tile that is drawn on each screen. Legal values are
\fIrandom\fP, \fIflat\fP, \fIthin\fP, \fIoutline\fP,
\fIblock\fP, \fIneon\fP, and \fItiled\fP
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
+.TP 8
+.B \-\-visual \fIvisual\fP
+Specify which visual to use. Legal values are the name of a visual class,
+or the id number (decimal or hex) of a specific visual.
+.TP 8
+.B \-\-window
+Draw on a newly-created window. This is the default.
+.TP 8
+.B \-\-root
+Draw on the root window.
+.TP 8
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
.SH ENVIRONMENT
.PP
.TP 8
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
.SH COPYRIGHT
Copyright \(co 2004 by Steve Sundstrom. Based on
examples from the hacks directory of xscreensaver,
-Copyright (c) 1997, 1998, 2002 Jamie Zawinski
-<jwz@jwz.org>
+Copyright (c) 1997, 1998, 2002 Jamie Zawinski <jwz@jwz.org>
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted,
anemone \- wiggling tentacles.
.SH SYNOPSIS
.B anemone
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-arms \fInumber\fP]
-[\-finpoints \fInumber\fP]
-[\-width \fInumber\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-arms \fInumber\fP]
+[\-\-finpoints \fInumber\fP]
+[\-\-width \fInumber\fP]
+[\-\-fps]
.SH DESCRIPTION
Wiggling tentacles.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 40000 (0.04 seconds.).
.TP 8
-.B \-arms \fInumber\fP
+.B \-\-arms \fInumber\fP
Arms. 2 - 500. Default: 128.
.TP 8
-.B \-finpoints \fInumber\fP
+.B \-\-finpoints \fInumber\fP
Tentacles. 3 - 200. Default: 64.
.TP 8
-.B \-withdraw \fInumber\fP
+.B \-\-withdraw \fInumber\fP
Frequency that the arms withdraw. Arms withdraw on randomly generated
values between 1 and 11; this value determines the maximum value of
that range. So 100 spends a lot of time withdrawn, while 1000,000 tends
not to withdraw at all. Default: 1200.
.TP 8
-.B \-turnspeed \fInumber\fP
+.B \-\-turnspeed \fInumber\fP
How fast it turns. At zero, not at all, all they way up to thousands
which are very fast indeed. Default: 50.
.TP 8
-.B \-width \fInumber\fP
+.B \-\-width \fInumber\fP
Thickness. 1 - 10. Default: 2.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
anemotaxis \- directional search on a plane.
.SH SYNOPSIS
.B anemotaxis
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-distance \fInumber\fP]
-[\-sources \fInumber\fP]
-[\-searchers \fInumber\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-distance \fInumber\fP]
+[\-\-sources \fInumber\fP]
+[\-\-searchers \fInumber\fP]
+[\-\-fps]
.SH DESCRIPTION
The program demonstrates a search algorithm designed for locating a
source of odor in turbulent atmosphere. The odor is convected by wind
trying to capture the sources.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 20000 (0.02 seconds.).
.TP 8
-.B \-distance \fInumber\fP
+.B \-\-distance \fInumber\fP
Max initial distance to the source . 10 - 250. Default: 40.
.TP 8
-.B \-sources \fInumber\fP
+.B \-\-sources \fInumber\fP
Max number of sources. Default: 25.
.TP 8
-.B \-searchers \fInumber\fP
+.B \-\-searchers \fInumber\fP
Max number of searchers. Default: 25.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
ant \- cellular automaton.
.SH SYNOPSIS
.B ant
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-install]
-[\-noinstall]
-[\-root]
-[\-eyes]
-[\-no-eyes]
-[\-truchet]
-[\-no-truchet]
-[\-sharpturn]
-[\-no-sharpturn]
-[\-delay \fInumber\fP]
-[\-cycles \fInumber\fP]
-[\-count \fInumber\fP]
-[\-size \fInumber\fP]
-[\-neighbors 3]
-[\-neighbors 4]
-[\-neighbors 6]
-[\-neighbors 9]
-[\-neighbors 12]
-[\-ncolors \fInumber\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-install]
+[\-\-noinstall]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-eyes]
+[\-\-no-eyes]
+[\-\-truchet]
+[\-\-no-truchet]
+[\-\-sharpturn]
+[\-\-no-sharpturn]
+[\-\-delay \fInumber\fP]
+[\-\-cycles \fInumber\fP]
+[\-\-count \fInumber\fP]
+[\-\-size \fInumber\fP]
+[\-\-neighbors 3]
+[\-\-neighbors 4]
+[\-\-neighbors 6]
+[\-\-neighbors 9]
+[\-\-neighbors 12]
+[\-\-ncolors \fInumber\fP]
+[\-\-fps]
.SH DESCRIPTION
A cellular automaton that is really a two-dimensional Turing machine: as
the heads ("ants") walk along the screen, they change pixel values in
influenced.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-sharpturns | \-no-sharpturns
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-sharpturns | \-\-no-sharpturns
Whether to do sharp turns.
.TP 8
-.B \-truchet | \-no-truchet
+.B \-\-truchet | \-\-no-truchet
Whether to use truchet lines.
.TP 8
-.B \-eyes | \-no-eyes
+.B \-\-eyes | \-\-no-eyes
Whether to draw eyes on the ants.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 1000 (0.0001 seconds.).
.TP 8
-.B \-cycles \fInumber\fP
+.B \-\-cycles \fInumber\fP
How long to wait until resetting. 0 - 800000. Default: 40000.
.TP 8
-.B \-count \fInumber\fP
+.B \-\-count \fInumber\fP
Ants Count. -20 - 20. Default: -3.
.TP 8
-.B \-size \fInumber\fP
+.B \-\-size \fInumber\fP
Ant Size. -18 - 18. Default: -12.
.TP 8
-.B \-neighbors \fIN\fP
+.B \-\-neighbors \fIN\fP
How many neighbors each cell has. Legal values are 3, 4, 6, 9, and 12.
.TP 8
-.B \-ncolors \fInumber\fP
+.B \-\-ncolors \fInumber\fP
Number of colors. Default: 64.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
apollonian \- Descartes Circle Theorem.
.SH SYNOPSIS
.B apollonian
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-no-label]
-[\-no-altgeom]
-[\-cycles \fInumber\fP]
-[\-ncolors \fInumber\fP]
-[\-delay \fInumber\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-no-label]
+[\-\-no-altgeom]
+[\-\-cycles \fInumber\fP]
+[\-\-ncolors \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-fps]
.SH DESCRIPTION
Packs a large circle with smaller circles, demonstrating the Descartes
Circle Theorem.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-label | \-no-label
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-label | \-\-no-label
Draw Labels. Boolean.
.TP 8
-.B \-altgeom | \-no-altgeom
+.B \-\-altgeom | \-\-no-altgeom
Include Alternate Geometries. Boolean.
.TP 8
-.B \-cycles \fInumber\fP
+.B \-\-cycles \fInumber\fP
Depth. 1 - 20. Default: 20.
.TP 8
-.B \-ncolors \fInumber\fP
+.B \-\-ncolors \fInumber\fP
Number of Colors. Default: 64.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 1000000 (1.00 seconds.).
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
apple2 \- Apple ][ display emulator
.SH SYNOPSIS
.B apple2
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP]
-[\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install]
-[\-visual \fIvisual\fP]
-[\-program \fIcommand to run\fP]
-[\-basic] [\-slideshow] [\-text]
-[\-meta] [\-esc] [\-bs] [\-del] [\-fast]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP] [\-\-foreground \fIcolor\fP]
+[\-\-background \fIcolor\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-mono] [\-\-install]
+[\-\-visual \fIvisual\fP]
+[\-\-program \fIcommand to run\fP]
+[\-\-basic] [\-\-slideshow] [\-\-text]
+[\-\-meta] [\-\-esc] [\-\-bs] [\-\-del] [\-\-fast]
+[\-\-fps]
.SH DESCRIPTION
The
.I apple2
television set of the period.
.PP
There are 3 modes: basic, slideshow, and text. Normally it chooses a
-mode randomly, but you can override with the \fI\-basic\fP,
-\fI\-slideshow\fP, or \fI\-text\fP options.
+mode randomly, but you can override with the \fI\-\-basic\fP,
+\fI\-\-slideshow\fP, or \fI\-\-text\fP options.
In basic mode a simulated user types in a Basic program and runs it.
In text mode it displays the output of a command or the contents of
a file or URL (via the default
.BR xscreensaver\-text (MANSUFFIX)
-program, which can be overridden with \fI\-program\fP).
+program, which can be overridden with \fI\-\-program\fP).
In text mode, it is also a fully functional (if anachronistic)
vt100 terminal emulator.
.I apple2
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-mono
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-mono
If on a color display, pretend we're on a monochrome display.
.TP 8
-.B \-install
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-basic
+.B \-\-basic
Choose basic mode
.TP 8
-.B \-slideshow
+.B \-\-slideshow
Choose slideshow mode
.TP 8
-.B \-text
+.B \-\-text
Choose text mode
.TP 8
-.B \-program \fIsh-command\fP
+.B \-\-program \fIsh-command\fP
In text mode, the command to run to generate the text to display. This
option may be any string acceptable to /bin/sh. The program will be
run at the end of a pipe, and any characters that it prints to
.sp
.fi
.TP 8
-.B \-pty
-In \fI\-text\fP mode, launch the sub-program under a pty so that it
+.B \-\-pty
+In \fI\-\-text\fP mode, launch the sub-program under a pty so that it
can address the screen directly. This is the default.
.TP 8
-.B \-pipe
-In \fI\-text\fP mode, launch the sub-program at the end of a pipe:
+.B \-\-pipe
+In \fI\-\-text\fP mode, launch the sub-program at the end of a pipe:
do not let it address the screen directly.
.TP 8
-.B \-esc
+.B \-\-esc
When the user types a key with the Alt or Meta keys held down, send an
ESC character first. This is the default.
.TP 8
-.B \-meta
+.B \-\-meta
When Meta or Alt are held down, set the high bit on the character instead.
.TP 8
-.B \-del
+.B \-\-del
Swap Backspace and Delete. This is the default.
.TP 8
-.B \-bs
+.B \-\-bs
Do not swap Backspace and Delete.
.TP 8
-.B \-fast
+.B \-\-fast
Normally, characters are printed at the speed of an original Apple][
computer; however, when using this program as a terminal emulator,
the novelty of those 300 baud characters might wear off. You can use
-the \fI\-fast\fP option to speed things up a bit.
+the \fI\-\-fast\fP option to speed things up a bit.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH TERMINAL EMULATION
-By default, \fIapple2\fP allocates a pseudo-tty for the \fI\-text\fP-mode
+By default, \fIapple2\fP allocates a pseudo-tty for the \fI\-\-text\fP-mode
sub-process to run under. This has the desirable side effect that the
program will be able to use
.BR ioctl (2)
Any characters typed on the apple2 window will be passed along to
the sub-process. (Note that this only works when running in "window"
-mode, not when running in \fI\-root\fP mode under xscreensaver.)
+mode, not when running in \fI\-\-root\fP mode under xscreensaver.)
.SH ENVIRONMENT
.PP
.TP 8
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
+.TP 8
.B TERM
to inform the sub-process of the type of terminal emulation.
.SH X RESOURCES
attraction \- interactions of opposing forces
.SH SYNOPSIS
.B attraction
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP]
-[\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install]
-[\-visual \fIvisual\fP] [\-points \fIint\fP] [\-threshold \fIint\fP]
-[\-mode balls | lines | polygons | splines | filled-splines | tails ]
-[\-size \fIint\fP] [\-segments \fIint\fP] [\-delay \fIusecs\fP]
-[\-color-shift \fIint\fP] [\-radius \fIint\fP]
-[\-vx \fIint\fP] [\-vy \fIint\fP] [\-glow] [\-noglow]
-[\-orbit] [\-viscosity \fIfloat\fP]
-[\-walls] [\-nowalls] [\-maxspeed] [\-nomaxspeed]
-[\-correct-bounce] [\-fast-bounce]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP] [\-\-foreground \fIcolor\fP]
+[\-\-background \fIcolor\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-mono] [\-\-install]
+[\-\-visual \fIvisual\fP] [\-\-points \fIint\fP] [\-\-threshold \fIint\fP]
+[\-\-mode balls | lines | polygons | splines | filled-splines | tails ]
+[\-\-size \fIint\fP] [\-\-segments \fIint\fP] [\-\-delay \fIusecs\fP]
+[\-\-color-shift \fIint\fP] [\-\-radius \fIint\fP]
+[\-\-vx \fIint\fP] [\-\-vy \fIint\fP] [\-\-glow] [\-\-noglow]
+[\-\-orbit] [\-\-viscosity \fIfloat\fP]
+[\-\-walls] [\-\-nowalls] [\-\-maxspeed] [\-\-nomaxspeed]
+[\-\-correct-bounce] [\-\-fast-bounce]
+[\-\-fps]
.SH DESCRIPTION
The \fIattraction\fP program has several visually different modes of
operation, all of which are based on the interactions of a set of control
.I attraction
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-mono
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-mono
If on a color display, pretend we're on a monochrome display.
.TP 8
-.B \-install
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-points integer
+.B \-\-points integer
How many control points should be used, or 0 to select the number randomly.
Default 0. Between 3 and 15 works best.
.TP 8
-.B \-threshold integer
+.B \-\-threshold integer
The distance (in pixels) from each particle at which the attractive force
becomes repulsive. Default 100.
.TP 8
-.B \-mode "balls | lines | polygons | tails | splines | filled-splines"
+.B \-\-mode "balls | lines | polygons | tails | splines | filled-splines"
In \fIballs\fP mode (the default) the control points are drawn as filled
circles. The larger the circle, the more massive the particle.
by a worm-like trail, whose length is controlled by the \fIsegments\fP
parameter.
.TP 8
-.B \-size integer
+.B \-\-size integer
The size of the balls in pixels, or 0, meaning to select the sizes
randomly (the default.) If this is specified, then all balls will be
the same size. This option has an effect in all modes, since the ``size''
of the balls controls their mass.
.TP 8
-.B \-segments integer
+.B \-\-segments integer
If in \fIlines\fP or \fIpolygons\fP mode, how many sets of line segments
or polygons should be drawn. Default 500. This has no effect in \fIballs\fP
mode. If \fIsegments\fP is 0, then no segments will ever be erased (this
is only useful in color.)
.TP 8
-.B \-delay microseconds
+.B \-\-delay microseconds
How much of a delay should be introduced between steps of the animation.
Default 10000, or about 0.01 seconds.
.TP 8
-.B \-color-shift int
+.B \-\-color-shift int
If on a color display, the color of the line segments or polygons will
cycle through the color map. This specifies how many lines will be drawn
before a new color is chosen. (When a small number of colors are available,
increasing this value will yield smoother transitions.) Default 3.
This has no effect in \fIballs\fP mode.
.TP 8
-.B \-radius
+.B \-\-radius
The size in pixels of the circle on which the points are initially positioned.
The default is slightly smaller than the size of the window.
.TP 8
-.B \-glow
+.B \-\-glow
This is consulted only in \fIballs\fP mode. If this is specified, then
the saturation of the colors of the points will vary according to their
current acceleration. This has the effect that the balls flare brighter
color, modulo the saturation shifts. In non-glow mode, the balls will
each be drawn in a random color that doesn't change.
.TP 8
-.B \-noglow
+.B \-\-noglow
Don't do ``glowing.'' This is the default.
.TP 8
-.B \-vx pixels
+.B \-\-vx pixels
.TP 8
-.B \-vy pixels
-Initial velocity of the balls. This has no effect in \fB\-orbit\fP mode.
+.B \-\-vy pixels
+Initial velocity of the balls. This has no effect in \fB\-\-orbit\fP mode.
.TP 8
-.B \-orbit
+.B \-\-orbit
Make the initial force on each ball be tangential to the circle on which
they are initially placed, with the right velocity to hold them in orbit
about each other. After a while, roundoff errors will cause the orbit
to decay.
.TP 8
-.B \-vmult float
+.B \-\-vmult float
In orbit mode, the initial velocity of the balls is multiplied by this;
a number less than 1 will make the balls pull closer together, and a larger
number will make them move apart. The default is 0.9, meaning a slight
inward pull.
.TP 8
-.B \-viscosity float
+.B \-\-viscosity float
This sets the viscosity of the hypothetical fluid through which the control
points move; the default is 1, meaning no resistance. Values higher than 1
aren't interesting; lower values cause less motion.
Give it a few seconds to settle down into a stable clump, and then move
the drag the mouse through it to make "waves".
.TP 8
-.B \-nowalls
+.B \-\-nowalls
This will cause the balls to continue on past the edge of the
screen or window. They will still be kept track of and can come back.
.TP 8
-.B \-walls
+.B \-\-walls
This will cause the balls to bounce when they get
to the edge of the screen or window. This is the default behavior.
.TP 8
-.B \-maxspeed
+.B \-\-maxspeed
Imposes a maximum speed (default). If a ball ends up going faster than
this, it will be treated as though there were .9 viscosity until it is
under the limit. This stops the balls from continually accelerating (which
they have a tendency to do), but also causes balls moving very fast to
tend to clump in the lower right corner.
.TP 8
-.B \-nomaxspeed
+.B \-\-nomaxspeed
If this is specified, no maximum speed is set for the balls.
.TP 8
-.B \-fast-bounce
+.B \-\-fast-bounce
Uses the old, simple bouncing algorithm (default). This simply moves any
ball that is out of bounds back to a wall and reverses its velocity.
This works fine for most cases, but under some circumstances, the
simplification can lead to annoying effects.
.TP 8
-.B \-correct-bounce
+.B \-\-correct-bounce
Uses a more intelligent bouncing algorithm. This method actually reflects
the balls off the walls until they are within bounds. This can be slow
if balls are bouncing a whole lot, perhaps because of -nomaxspeed.
.TP 8
-.B \-graphmode none | x | y | both | speed
+.B \-\-graphmode none | x | y | both | speed
For "x", "y", and "both", displays the given velocities of each ball as a
bar graph in the same window as the balls. For "speed", displays the total
speed of each ball. Default is "none".
.BR
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.B DISPLAY
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
barcode \- draws a random sequence of barcodes for the products you enjoy
.SH SYNOPSIS
.B barcode
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-clock]
-[\-clock24]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-clock]
+[\-\-clock24]
+[\-\-fps]
.SH DESCRIPTION
This draws a random sequence of colorful barcodes scrolling across your
screen.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 10000 (0.02 seconds.).
.TP 8
-.B \-clock
+.B \-\-clock
Instead of drawing a stream of barcodes, draw a barcode-based digital clock.
.TP 8
-.B \-clock24
-Same as \fI\-clock\fP, but display 24-hour time instead of 12-hour time.
+.B \-\-clock24
+Same as \fI\-\-clock\fP, but display 24-hour time instead of 12-hour time.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
binaryhorizon - A system of path tracing particles evolves continuously.
.SH SYNOPSIS
.B binaryhorizon
-[\-fps]
-[\-install]
-[\-noinstall]
-[\-mono]
-[\-root]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-window\-id \fIwindow\-id\fP]
-[\-color]
-[\-no\-color]
-[\-growth\-delay \fIdelayms\fP]
-[\-particle\-number \fIparticles\fP]
-[\-duration \fIsecs\fP]
-[\-bicolor]
-[\-monocolor]
+[\-\-fps]
+[\-\-install]
+[\-\-noinstall]
+[\-\-mono]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-window\-id \fIwindow\-id\fP]
+[\-\-color]
+[\-\-no\-color]
+[\-\-growth\-delay \fIdelayms\fP]
+[\-\-particle\-number \fIparticles\fP]
+[\-\-duration \fIsecs\fP]
+[\-\-bicolor]
+[\-\-monocolor]
.SH DESCRIPTION
A system of path tracing particles evolves continuously from an
initial horizon, alternating between colors.
.I binaryhorizon
accepts the following options:
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.TP 8
-.B \-install
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-mono
+.B \-\-mono
If on a color display, pretend we're on a monochrome display.
.TP 8
-.B \-noinstall
+.B \-\-noinstall
Don't install a private colormap for the window.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual
class or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-window\-id \fIwindow\-id\fP
+.B \-\-window\-id \fIwindow\-id\fP
Specify which window id to use.
.TP 8
-.B \-color (Default)
+.B \-\-color (Default)
Particles have random generated colors that gradually change over time.
.TP 8
-.B \-no\-color
+.B \-\-no\-color
Use the original black and white visualization.
.TP 8
-.B \-bicolor (Default)
+.B \-\-bicolor (Default)
Particles have 2 random colors, starting as white and black.
.TP 8
-.B \-monocolor
+.B \-\-monocolor
Particles have 2 colors, one starting as white and gradually changing,
and one staying black.
.TP 8
-.B \-fade (Default)
+.B \-\-fade (Default)
Particles gradually fade between colors over time.
.TP 8
-.B \-no-fade
+.B \-\-no-fade
Every particle is a random color.
.TP 8
-.B \-growth\-delay \fIdelayms\fP (Default: \fI10000\fP)
+.B \-\-growth\-delay \fIdelayms\fP (Default: \fI10000\fP)
Delay in ms between growth cycles. More delay, slower (but less CPU intensive).
.TP 8
-.B \-particles\-number \fIparticles\fP (Default: \fI5000\fP)
+.B \-\-particles\-number \fIparticles\fP (Default: \fI5000\fP)
The number of particles in the system. With more particles the fps
can also be affected.
.TP 8
-.B \-duration \fIsecs\fP (Default: \fI30\fP)
+.B \-\-duration \fIsecs\fP (Default: \fI30\fP)
How long between full resets.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global
resources stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1),
binaryring \- A system of path tracing particles evolves continuously from an initial creation.
.SH SYNOPSIS
.B binaryring
-[\-fps]
-[\-install]
-[\-noinstall]
-[\-mono]
-[\-root]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-window\-id \fIwindow\-id\fP]
-[\-color]
-[\-no\-color]
-[\-growth\-delay \fIdelayms\fP]
-[\-particle\-number \fIparticles\fP]
-[\-ring\-radius \fIradius\fP]
+[\-\-fps]
+[\-\-install]
+[\-\-noinstall]
+[\-\-mono]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-window\-id \fIwindow\-id\fP]
+[\-\-color]
+[\-\-no\-color]
+[\-\-growth\-delay \fIdelayms\fP]
+[\-\-particle\-number \fIparticles\fP]
+[\-\-ring\-radius \fIradius\fP]
.SH DESCRIPTION
A system of path tracing particles evolves continuously from an
initial circular creation. Ages of darkness play arbitrarily with
.I binaryring
accepts the following options:
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.TP 8
-.B \-install
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-mono
+.B \-\-mono
If on a color display, pretend we're on a monochrome display.
.TP 8
-.B \-noinstall
+.B \-\-noinstall
Don't install a private colormap for the window.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual
class or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-window\-id \fIwindow\-id\fP
+.B \-\-window\-id \fIwindow\-id\fP
Specify which window id to use.
.TP 8
-.B \-color (Default)
+.B \-\-color (Default)
Particles have random generated colors that gradually change over time.
.TP 8
-.B \-no\-color
+.B \-\-no\-color
Use the original black and white visualization.
.TP 8
-.B \-growth\-delay \fIdelayms\fP (Default: \fI10000\fP)
+.B \-\-growth\-delay \fIdelayms\fP (Default: \fI10000\fP)
Delay in ms between growth cycles. More delay, slower (but less CPU intensive).
.TP 8
-.B \-particles\-number \fIparticles\fP (Default: \fI5000\fP)
+.B \-\-particles\-number \fIparticles\fP (Default: \fI5000\fP)
The number of particles in the system. With more particles the fps
can also be affected.
.TP 8
-.B \-ring\-radius \fIradius\fP (Default: \fI40\fP)
+.B \-\-ring\-radius \fIradius\fP (Default: \fI40\fP)
The radius of the ring where the particles are born, in pixels.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global
resources stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1),
blaster \- simulation of space combat
.SH SYNOPSIS
.B blaster
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-num_robots \fInumber\fP]
-[\-num_lasers \fInumber\fP]
-[\-num_stars \fInumber\fP]
-[\-delay \fInumber\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-num_robots \fInumber\fP]
+[\-\-num_lasers \fInumber\fP]
+[\-\-num_stars \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-fps]
.SH DESCRIPTION
Draws a simulation of flying space-combat robots (cleverly disguised as
colored circles) doing battle in front of a moving star field.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-num_robots \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-num_robots \fInumber\fP
Robots. 2 - 50. Default: 5.
.TP 8
-.B \-num_lasers \fInumber\fP
+.B \-\-num_lasers \fInumber\fP
Lasers. 1 - 100. Default: 3.
.TP 8
-.B \-num_stars \fInumber\fP
+.B \-\-num_stars \fInumber\fP
Stars. 5 - 200. Default: 50.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 10000 (0.01 seconds.).
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
blitspin \- rotate a bitmap in an interesting way
.SH SYNOPSIS
.B blitspin
-[\-display \fIhost:display.screen\fP]
-[\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root]
-[\-mono] [\-install] [\-visual \fIvisual\fP] [\-bitmap \fIfilename\fP]
-[\-delay \fIusecs\fP] [\-delay2 \fIusecs\fP] [\-duration \fIsecs\fP]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-foreground \fIcolor\fP] [\-\-background \fIcolor\fP] [\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-mono] [\-\-install] [\-\-visual \fIvisual\fP] [\-\-bitmap \fIfilename\fP]
+[\-\-delay \fIusecs\fP] [\-\-delay2 \fIusecs\fP] [\-\-duration \fIsecs\fP]
.SH DESCRIPTION
The \fIblitspin\fP program repeatedly rotates a bitmap by 90 degrees by
using logical operations: the bitmap is divided into quadrants, and the
.I blitspin
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-mono
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-mono
If on a color display, pretend we're on a monochrome display.
.TP 8
-.B \-install
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-bitmap \fIfilename\fP
+.B \-\-bitmap \fIfilename\fP
The file name of a bitmap to rotate. It need not be square: it
will be padded with the background color. If unspecified or the
string \fI(default)\fP, a builtin bitmap is used.
The \fB*bitmapFilePath\fP resource will be searched if the bitmap
name is not a fully-qualified pathname.
.TP 8
-.B \-grab\-screen
+.B \-\-grab\-screen
If this option is specified, then the image which is spun will be grabbed
from the portion of the screen underlying the blitspin window, or from
the system's video input, or from a random file on disk, as indicated by
.BR xscreensaver\-settings (1)
for more details.
.TP 8
-.B \-delay \fImicroseconds\fP
+.B \-\-delay \fImicroseconds\fP
How long to delay between steps of the rotation process, in microseconds.
Default is 500000, one-half second.
.TP 8
-.B \-duration \fIseconds\fP
+.B \-\-duration \fIseconds\fP
How long to run before loading a new image. Default 120 seconds.
.TP 8
-.B \-delay2 \fImicroseconds\fP
+.B \-\-delay2 \fImicroseconds\fP
How long to delay between each 90-degree rotation, in microseconds.
Default is 500000, one-half second.
.B DISPLAY
to get the default host and display number.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1),
bouboule \- draws spinning 3D blobs
.SH SYNOPSIS
.B bouboule
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP] [\-delay \fImicroseconds\fP] [\-cycles \fIinteger\fP] [\-count \fIinteger\fP] [\-3d]
+[\-\-display \fIhost:display.screen\fP] [\-\-foreground \fIcolor\fP]
+[\-\-background \fIcolor\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-mono] [\-\-install] [\-\-visual \fIvisual\fP] [\-\-ncolors \fIinteger\fP] [\-\-delay \fImicroseconds\fP] [\-\-cycles \fIinteger\fP] [\-\-count \fIinteger\fP] [\-3d]
-[\-fps]
+[\-\-fps]
.SH DESCRIPTION
The \fIbouboule\fP program draws spinning 3D blobs.
.SH OPTIONS
.I bouboule
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-mono
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-mono
If on a color display, pretend we're on a monochrome display.
.TP 8
-.B \-install
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-ncolors \fIinteger\fP
+.B \-\-ncolors \fIinteger\fP
How many colors should be used (if possible). Default 64.
The colors used cycle through the hue, making N stops around
the color wheel.
.TP 8
-.B \-cycles \fIinteger\fP
+.B \-\-cycles \fIinteger\fP
.TP 8
-.B \-count \fIinteger\fP
+.B \-\-count \fIinteger\fP
.TP 8
.B \-3d
Do red/blue 3d separations (for 3d glasses.)
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1),
boxfit \- fills space with a gradient of growing boxes or circles.
.SH SYNOPSIS
.B boxfit
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fIusecs\fP]
-[\-count \fIint\fP]
-[\-growby \fIint\fP]
-[\-spacing \fIint\fP]
-[\-border \fIint\fP]
-[\-circles | \-squares | \-random]
-[\-grab]
-[\-peek]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fIusecs\fP]
+[\-\-count \fIint\fP]
+[\-\-growby \fIint\fP]
+[\-\-spacing \fIint\fP]
+[\-\-border \fIint\fP]
+[\-\-circles | \-\-squares | \-\-random]
+[\-\-grab]
+[\-\-peek]
+[\-\-fps]
.SH DESCRIPTION
Packs the screen with growing boxes or circles, colored according to a
horizontal or vertical gradient. The objects grow until they touch,
restarts.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fImicroseconds\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fImicroseconds\fP
How much of a delay should be introduced between steps of the animation.
Default 20000, or about 0.02 seconds.
.TP 8
-.B \-count \fIint\fP
+.B \-\-count \fIint\fP
How many boxes or circles to animate simultaneously; default 50.
Smaller numbers yield larger boxes/circles.
.TP 8
-.B \-growby \fIint\fP
+.B \-\-growby \fIint\fP
How many pixels the objects should grow by, each frame. Default 1.
.TP 8
-.B \-spacing \fIint\fP
+.B \-\-spacing \fIint\fP
How many pixels of space should be left between the objects. Default 1.
.TP 8
-.B \-border \fIint\fP
+.B \-\-border \fIint\fP
Thickness of the colored border around each object. Default 1.
.TP 8
-.B \-circles\fB | \-squares\fP | \-random\fP
+.B \-\-circles\fB | \-\-squares\fP | \-\-random\fP
Draw circles, squares, or choose randomly (the default).
.TP 8
-.B \-grab
+.B \-\-grab
Normally it colors the boxes with a horizontal or vertical gradient.
-If \fI\-grab\fP is specified, it will instead load a random image,
+If \fI\-\-grab\fP is specified, it will instead load a random image,
and color the boxes according to the colors in that image.
As the picture fills in, some features of the underlying image
may become recognisable.
.BR xscreensaver\-settings (1)
for more details.
.TP 8
-.B \-peek
+.B \-\-peek
This option says to briefly show you the underlying image before
beginning. The default is not to show the unadulterated image at all.
-(This only has an effect when \fI\-grab\fP is used.)
+(This only has an effect when \fI\-\-grab\fP is used.)
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
braid \- draws random color-cycling braids around a circle
.SH SYNOPSIS
.B braid
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP] [\-delay \fImicroseconds\fP] [\-cycles \fIinteger\fP] [\-count \fIinteger\fP]
+[\-\-display \fIhost:display.screen\fP] [\-\-foreground \fIcolor\fP]
+[\-\-background \fIcolor\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-mono] [\-\-install] [\-\-visual \fIvisual\fP] [\-\-ncolors \fIinteger\fP] [\-\-delay \fImicroseconds\fP] [\-\-cycles \fIinteger\fP] [\-\-count \fIinteger\fP]
-[\-fps]
+[\-\-fps]
.SH DESCRIPTION
The \fIbraid\fP program draws random color-cycling braids around a circle.
.SH OPTIONS
.I braid
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-mono
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-mono
If on a color display, pretend we're on a monochrome display.
.TP 8
-.B \-install
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-ncolors \fIinteger\fP
+.B \-\-ncolors \fIinteger\fP
How many colors should be used (if possible). Default 64.
The colors used cycle through the hue, making N stops around
the color wheel.
.TP 8
-.B \-cycles \fIinteger\fP
+.B \-\-cycles \fIinteger\fP
.TP 8
-.B \-count \fIinteger\fP
+.B \-\-count \fIinteger\fP
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1),
(bst)->pos++; \
} while (0)
-/* Set the prevailing top/bottom margins (used when scrolling and cropping text)
+/* Set the prevailing top/bottom margins (used when scrolling/cropping text)
*/
#define BSOD_VERT_MARGINS(bst,top,bottom) do { \
ensure_queue (bst); \
"VMware ESX Server [Releasebuild-98103]\n");
BSOD_COLOR (bst, fg, bg);
BSOD_TEXT (bst, LEFT,
- "PCPU 1 locked up. Failed to ack TLB invalidate.\n"
- "frame=0x3a37d98 ip=0x625e94 cr2=0x0 cr3=0x40c66000 cr4=0x16c\n"
- "es=0xffffffff ds=0xffffffff fs=0xffffffff gs=0xffffffff\n"
- "eax=0xffffffff ebx=0xffffffff ecx=0xffffffff edx=0xffffffff\n"
- "ebp=0x3a37ef4 esi=0xffffffff edi=0xffffffff err=-1 eflags=0xffffffff\n"
- "*0:1037/helper1-4 1:1107/vmm0:Fagi 2:1121/vmware-vm 3:1122/mks:Franc\n"
- "0x3a37ef4:[0x625e94]Panic+0x17 stack: 0x833ab4, 0x3a37f10, 0x3a37f48\n"
- "0x3a37f04:[0x625e94]Panic+0x17 stack: 0x833ab4, 0x1, 0x14a03a0\n"
- "0x3a37f48:[0x64bfa4]TLBDoInvalidate+0x38f stack: 0x3a37f54, 0x40, 0x2\n"
- "0x3a37f70:[0x66da4d]XMapForceFlush+0x64 stack: 0x0, 0x4d3a, 0x0\n"
- "0x3a37fac:[0x652b8b]helpFunc+0x2d2 stack: 0x1, 0x14a4580, 0x0\n"
- "0x3a37ffc:[0x750902]CpuSched_StartWorld+0x109 stack: 0x0, 0x0, 0x0\n"
- "0x3a38000:[0x0]blk_dev+0xfd76461f stack: 0x0, 0x0, 0x0\n"
- "VMK uptime: 7:05:43:45.014 TSC: 1751259712918392\n"
- "Starting coredump to disk\n");
+ "PCPU 1 locked up. Failed to ack TLB invalidate.\n"
+ "frame=0x3a37d98 ip=0x625e94 cr2=0x0 cr3=0x40c66000 cr4=0x16c\n"
+ "es=0xffffffff ds=0xffffffff fs=0xffffffff gs=0xffffffff\n"
+ "eax=0xffffffff ebx=0xffffffff ecx=0xffffffff edx=0xffffffff\n"
+ "ebp=0x3a37ef4 esi=0xffffffff edi=0xffffffff err=-1 eflags=0xffffffff\n"
+ "*0:1037/helper1-4 1:1107/vmm0:Fagi 2:1121/vmware-vm 3:1122/mks:Franc\n"
+ "0x3a37ef4:[0x625e94]Panic+0x17 stack: 0x833ab4, 0x3a37f10, 0x3a37f48\n"
+ "0x3a37f04:[0x625e94]Panic+0x17 stack: 0x833ab4, 0x1, 0x14a03a0\n"
+ "0x3a37f48:[0x64bfa4]TLBDoInvalidate+0x38f stack: 0x3a37f54, 0x40, 0x2\n"
+ "0x3a37f70:[0x66da4d]XMapForceFlush+0x64 stack: 0x0, 0x4d3a, 0x0\n"
+ "0x3a37fac:[0x652b8b]helpFunc+0x2d2 stack: 0x1, 0x14a4580, 0x0\n"
+ "0x3a37ffc:[0x750902]CpuSched_StartWorld+0x109 stack: 0x0, 0x0, 0x0\n"
+ "0x3a38000:[0x0]blk_dev+0xfd76461f stack: 0x0, 0x0, 0x0\n"
+ "VMK uptime: 7:05:43:45.014 TSC: 1751259712918392\n"
+ "Starting coredump to disk\n");
BSOD_CHAR_DELAY (bst, 10000);
BSOD_TEXT (bst, LEFT, "using slot 1 of 1... ");
BSOD_CHAR_DELAY (bst, 300000);
BSOD_CHAR_DELAY (bst, 10000);
BSOD_TEXT (bst, LEFT, "Press Escape to enter local debugger\n");
BSOD_CHAR_DELAY (bst, 10000);
- BSOD_TEXT (bst, LEFT, "Remote debugger activated. Local debugger no longer available.\n");
+ BSOD_TEXT (bst, LEFT,
+ "Remote debugger activated. Local debugger no longer available.\n");
/* BSOD_CURSOR (bst, CURSOR_LINE, 240000, 999999);*/
return bst;
}
+/* VMware ESXi 7.0 on a 64-bit Arm host (actually ESXi-Arm Fling)
+ by Andrei E. Warkentin <andreiw@mm.st>.
+ */
+static struct bsod_state *
+vmware_arm (Display *dpy, Window window)
+{
+ struct bsod_state *bst = make_bsod_state (dpy, window,
+ "vmware-arm", "VMwareArm");
+
+ unsigned i = 2;
+ unsigned msg_row;
+ unsigned long fg = bst->fg;
+ char t_string[25];
+ time_t t_now = time(NULL);
+ unsigned long font_height = bst->font->ascent + bst->font->descent;
+
+ unsigned long psod_bg = get_pixel_resource(dpy, bst->xgwa.colormap,
+ "vmware-arm-psod.background",
+ "vmware-arm-psod.background");
+ unsigned long term_bg = get_pixel_resource(dpy, bst->xgwa.colormap,
+ "vmware-arm-term.background",
+ "vmware-arm-term.background");
+ unsigned long term_fg2 = get_pixel_resource(dpy, bst->xgwa.colormap,
+ "vmware-arm-term.foreground2",
+ "vmware-arm-term.foreground2");
+ unsigned long term_fg3 = get_pixel_resource(dpy, bst->xgwa.colormap,
+ "vmware-arm-term.foreground3",
+ "vmware-arm-term.foreground3");
+ unsigned long dbg_bg = get_pixel_resource(dpy, bst->xgwa.colormap,
+ "vmware-arm-dbg.background",
+ "vmware-arm-dbg.background");
+ unsigned long dbg_fg = get_pixel_resource(dpy, bst->xgwa.colormap,
+ "vmware-arm-dbg.foreground",
+ "vmware-arm-dbg.foreground");
+ unsigned long fg2 = get_pixel_resource (dpy, bst->xgwa.colormap,
+ "vmware-arm.foreground2",
+ "vmware-arm.foreground2");
+
+ BSOD_WRAP (bst);
+ BSOD_MARGINS(bst, 0, 0);
+ BSOD_VERT_MARGINS(bst, 0, 0);
+
+ /*
+ * statusterm.
+ */
+ BSOD_TRUNCATE(bst);
+ BSOD_COLOR (bst, term_bg, fg);
+ BSOD_RECT (bst, True, 0, 0, bst->xgwa.width, bst->xgwa.height);
+ BSOD_MOVETO(bst, 0, font_height * 6);
+ BSOD_COLOR (bst, fg, term_bg);
+ BSOD_TEXT (bst, LEFT,
+ " VMware ESXi 7.0.0 (VMKernel Release Build 19076756)");
+ BSOD_MOVETO(bst, 0, font_height * 8);
+ BSOD_COLOR (bst, fg, term_bg);
+ BSOD_TEXT (bst, LEFT, " PINE64 Quartz64 Model A");
+ BSOD_MOVETO(bst, 0, font_height * 10);
+ BSOD_COLOR (bst, term_fg2, term_bg);
+ BSOD_TEXT (bst, LEFT, " ARM Limited Cortex-A55 r2p0");
+ BSOD_MOVETO(bst, 0, font_height * 11);
+ BSOD_COLOR (bst, term_fg2, term_bg);
+ BSOD_TEXT (bst, LEFT, " 7.7 GiB Memory");
+
+ msg_row = 1 + (bst->xgwa.height / (font_height * 2));
+ if (msg_row > 11) {
+ BSOD_WRAP(bst);
+ BSOD_MOVETO(bst, 0, font_height * msg_row);
+ BSOD_COLOR (bst, term_fg3, term_bg);
+ strftime(t_string, sizeof(t_string), "%Y-%m-%dT%H:%M:%S.000Z",
+ localtime(&t_now));
+ BSOD_TEXT (bst, LEFT, t_string);
+ BSOD_TEXT (bst, LEFT,
+ " cpu0:65802)Failed to verify signatures of the following vib(s):"
+ " [bnxtnet bnxtroce brcmfcoe brcmnvmefc elx-esx-libelxima.so"
+ " eslxiscsi elxnet ena esx base esx-dvfilter-generic-fastpath"
+ " esx-ui esx-update i40en i40iwn iavmd igbn iser$");
+ }
+
+ BSOD_PAUSE (bst, 10000000);
+
+ /*
+ * Now the PSOD.
+ */
+ BSOD_TRUNCATE(bst);
+ BSOD_COLOR (bst, psod_bg, fg);
+ BSOD_RECT (bst, True, 0, 0, bst->xgwa.width, bst->xgwa.height);
+ BSOD_MOVETO(bst, 0, bst->font->ascent);
+ BSOD_COLOR (bst, fg2, psod_bg);
+ BSOD_TEXT (bst, LEFT,
+ "VMware ESX 7.0.0 [Releasebuild-19076756 aarch64]\n");
+ BSOD_COLOR (bst, fg, psod_bg);
+ BSOD_LINE_DELAY (bst, 1000);
+ BSOD_TEXT (bst, LEFT,
+ "EXCVEC_CUREL_SP_EL0_SYNCH Exception 0 in world 131126:HELPER_UPLIN"
+ " (ec 0x25 il 1 iss 0x47 far_el1 0x315d3541b8 far_el2 0x4501843b1000)"
+ "\nTTB=0x12ade8000"
+ "\nCurrentEL=2 SP_EL0 DAIF"
+ "\nSCTLR_EL2=0x30c0180d sa0 SA C a M"
+ "\n[ 0] 4501843b0000 [ 1] 0 [ 2]"
+ " 1000 [ 3] 4501843b1000"
+ "\n[ 4] 451a01b1be20 [ 5] 0 [ 6]"
+ " 4305be607a5a [ 7] 4200400001c0"
+ "\n[ 8] 0 [ 9] 451a01b1be20 [10]"
+ " 1 [11] 1"
+ "\n[12] ffffed40 [13] 420040000080 [14]"
+ " 41fffa5d7000 [15] 41fffa5d7c20"
+ "\n[16] 1 [17] 4 [18]"
+ " 41fffa5d7c08 [19] 451a01b1be70"
+ "\n[20] 43024240b680 [21] 4305be601900 [22]"
+ " 4305be6012c0 [23] 41ffd0c00000"
+ "\n[24] 4305be601220 [25] bad0001 [26]"
+ " 0 [27] 43006fc01220"
+ "\n[28] 4303d5001220 [29] 0 [30] 42003b3ceb6c"
+ "\n[pc] 42003a344d54 [sp] 451a01b1bdd0 [psr] 20000248"
+ "\n*PCPU0:131126/HELPER_UPLINK_ASYNC_CALL_QUEUE"
+ "\nPCPU 0: SUUU"
+ "\nCode start: 0x42003a200000 VMK uptime: 0:00:05:35.425"
+ "\n0x451a01b1bdd0:[0x42003a344d54]vmk_Memset@vmkernel#nover+0x28"
+ " stack: 0x42003b3cfa48"
+ "\n0x451a01b1bdd0:[0x42003b3ceb68]EQOSEnable@(eqos)#<None>+0xe0"
+ " stack: 0x42003b3cfa48"
+ "\n0x451a01b1be20:[0x42003b3c9220]SETHUplAssociate@(eqos)#<None>+0x88"
+ " stack: 0x43024240b680"
+ "\n0x451a01b1be80:[0x42003a48a078]UplinkDeviceAssociateAsyncCB"
+ "@vmkernel#nover+0x50 stack: 0x43024240bb08"
+ "\n0x451a01b1bed0:[0x42003a555a6c]UplinkAsyncProcessCallsHelperCB"
+ "@vmkernel#nover+0x12c stack: 0x451a01b21000"
+ "\n0x451a01b1bf20:[0x42003a2fd510]HelperQueueFunc@vmkernel#nover+0x174"
+ " stack: 0x451a01b21100"
+ "\n0x451a01b1bfe0:[0x42003a59e4fc]CpuSched_StartWorld@vmkernel#nover+0x70"
+ " stack: 0x0"
+ "\n0x451a01b1c000:[0x42003a5ec610]CpuSched_UseMwaitCallback"
+ "@vmkernel#nover+0x8 stack: 0x0"
+ "\nNo place on disk to dump data."
+ "\nCoredump to file: /vmfs/volumes/3a4fcb25-5f6ca096-c940-70886b86100c"
+ "/vmkdump/00000000-0000-0000-0000-000000000000.dumpfile."
+ "\nFaulting world regs (01/15)");
+ BSOD_PAUSE (bst, 300000);
+ BSOD_TEXT (bst, LEFT, "\nVmm code/data (02/15)");
+ BSOD_PAUSE (bst, 300000);
+ BSOD_TEXT (bst, LEFT, "\nVmk code/rodata/stack (03/15)");
+ BSOD_PAUSE (bst, 300000);
+ BSOD_TEXT (bst, LEFT, "\nVmk data/heap (04/15)");
+ BSOD_PAUSE (bst, 300000);
+ BSOD_TEXT (bst, LEFT, "\nPCPU (05/15)");
+ BSOD_PAUSE (bst, 300000);
+ BSOD_TEXT (bst, LEFT, "\nWorld-specific data (06/15)");
+ BSOD_PAUSE (bst, 300000);
+ BSOD_TEXT (bst, LEFT, "\nVASpace (08/15)");
+ BSOD_PAUSE (bst, 1000000);
+ BSOD_TEXT (bst, LEFT, "\nPFrame (09/15)");
+ BSOD_PAUSE (bst, 1000000);
+ BSOD_TEXT (bst, LEFT, "\nMemXferFs (11/15)");
+ BSOD_PAUSE (bst, 300000);
+ BSOD_TEXT (bst, LEFT, "\nDump Files (13/15)");
+ BSOD_PAUSE (bst, 600000);
+ BSOD_TEXT (bst, LEFT, "\nCollecting userworld dumps (14/15)");
+ BSOD_PAUSE (bst, 600000);
+ BSOD_TEXT (bst, LEFT,
+ "\nFinalized dump header (15/15) FileDump: Successful.");
+ BSOD_PAUSE (bst, 10000);
+ BSOD_TEXT (bst, LEFT,
+ "\nNo port for remote debugger. Press \"Escape\" for local debugger.");
+ BSOD_PAUSE (bst, 1000000);
+
+ /*
+ * Local debugger.
+ */
+ BSOD_COLOR (bst, dbg_bg, dbg_fg);
+ BSOD_RECT (bst, True, 0, 0, bst->xgwa.width, bst->xgwa.height);
+ BSOD_MOVETO(bst, 0, bst->font->ascent);
+ BSOD_TEXT (bst, LEFT, "vmkernel debugger (h for help)");
+ BSOD_RECT (bst, True, 0, bst->font->ascent + bst->font->descent / 2,
+ bst->xgwa.width, bst->font->ascent);
+ BSOD_COLOR (bst, dbg_fg, dbg_bg);
+ BSOD_TEXT (bst, LEFT, "\n[PCPU2] VMKDBG> _");
+ while (i--) {
+ BSOD_PAUSE (bst, 1000000);
+ BSOD_TEXT (bst, LEFT, "\bh_");
+ BSOD_PAUSE (bst, 10000);
+ BSOD_TEXT (bst, LEFT, "\b \nh : help"
+ "\nreboot : reboot"
+ "\nlivedump: Create live coredump without crashing system"
+ "\nl : display vmkernel log"
+ "\np : display content of symbol"
+ "\ns : display storage dump+boot info"
+ "\nx : display 32-bit content of address"
+ "\nx/N : display N bytes of content at address"
+ "\ng port : bind remote debugger to port (com1 or com2)"
+ "\nbt N : show backtrace for CPU N"
+ "\nq : quit debug terminal"
+ "\n[PCPU2] VMKDBG> _");
+ }
+ BSOD_PAUSE (bst, 100000);
+ BSOD_TEXT (bst, LEFT, "\bre_");
+ BSOD_PAUSE (bst, 500000);
+ BSOD_TEXT (bst, LEFT, "\bb_");
+ BSOD_PAUSE (bst, 50000);
+ BSOD_TEXT (bst, LEFT, "\bo_");
+ BSOD_PAUSE (bst, 50000);
+ BSOD_TEXT (bst, LEFT, "\bo_");
+ BSOD_PAUSE (bst, 50000);
+ BSOD_TEXT (bst, LEFT, "\bt_");
+ BSOD_PAUSE (bst, 2000000);
+ BSOD_COLOR (bst, dbg_bg, dbg_fg);
+ BSOD_RECT (bst, True, 0, 0, bst->xgwa.width, bst->xgwa.height);
+ BSOD_PAUSE (bst, 1000000);
+
+ XClearWindow (dpy, window);
+ return bst;
+}
+
/* Windows NT 3.1 - 4.0
*/
case 3:
BSOD_TEXT (bst, CENTER,
- "Microsoft (R) Windows NT (R) Version 5.0 (Build 1796)\n"
- "1 System Processor [128 MB Memory] MultiProcessor Kernel\n"
- "\n"
- "*** STOP: 0x0000006B (0xC000003A, 0x00000002,0x00000000,0x00000000)\n"
- "PROCESS1_INITIALIZATION_FAILED\n"
- "\n"
- "If this is the first time you[ve seen this Stop error screen,\n"
- "restart your computer. If this screen appears again, follow\n"
- "these steps:\n"
- "\n"
- "Check to make sure any new hardware or software is properly installed.\n"
- "If this is a new installation, ask your hardware or software manufacturer\n"
- "for any Windows NT updates you might need.\n"
- "\n"
- "If problems continue, disable or remove any newly installed hardware\n"
- "or software. Disable BIOS memory options such as caching or shadowing.\n"
- "If you need to use Safe Mode to remove or disable components, restart\n"
- "your computer, press F8 to select Advanced Startup Options, and then\n"
- "select Safe Mode.\n"
- "\n"
- "Refer to your Getting Started manual for more information on\n"
- "troubleshooting Stop errors.\n"
- "\n");
+ "Microsoft (R) Windows NT (R) Version 5.0 (Build 1796)\n"
+ "1 System Processor [128 MB Memory] MultiProcessor Kernel\n"
+ "\n"
+ "*** STOP: 0x0000006B (0xC000003A, 0x00000002,0x00000000,0x00000000)\n"
+ "PROCESS1_INITIALIZATION_FAILED\n"
+ "\n"
+ "If this is the first time you[ve seen this Stop error screen,\n"
+ "restart your computer. If this screen appears again, follow\n"
+ "these steps:\n"
+ "\n"
+ "Check to make sure any new hardware or software is properly installed.\n"
+ "If this is a new installation, ask your hardware or software"
+ " manufacturer\n"
+ "for any Windows NT updates you might need.\n"
+ "\n"
+ "If problems continue, disable or remove any newly installed hardware\n"
+ "or software. Disable BIOS memory options such as caching or shadowing.\n"
+ "If you need to use Safe Mode to remove or disable components, restart\n"
+ "your computer, press F8 to select Advanced Startup Options, and then\n"
+ "select Safe Mode.\n"
+ "\n"
+ "Refer to your Getting Started manual for more information on\n"
+ "troubleshooting Stop errors.\n"
+ "\n");
break;
default:
abort();
break;
case 5: /* Windows 8 */
BSOD_TEXT (bst, LEFT,
- "A problem has been detected and windows has been shut down to prevent\n"
- "damage to your computer.\n"
- "\n"
- "SYSTEM_SERVICE_EXCEPTION\n"
- "\n"
- "If this is the first time you[ve seen this Stop error screen,\n"
- "restart your computer. If this screen appears again, follow\n"
- "these steps:\n"
- "\n"
- "Check to make sure any new hardware or software is properly installed.\n"
- "If this is a new installation, ask your hardware or software"
- " manufacturer\n"
- "for any Windows NT updates you might need.\n"
- "\n"
- "If problems continue, disable or remove any newly installed hardware\n"
- "or software. Disable BIOS memory options such as caching or shadowing.\n"
- "If you need to use Safe Mode to remove or disable components, restart\n"
- "your computer, press F8 to select Advanced Startup Options, and then\n"
- "select Safe Mode.\n"
- "\n"
- "Technical information:\n"
- "\n"
- "*** STOP: 0x0000003B (0x00000000c000005,0xFFFFF880041C9062,"
- "0xFFFFF88002E22F60,0x0000000000000000(\n"
- "\n"
- "*** dxgmms1.sys - Address FFFFF880041C9062 base at FFFFF8800418F000,"
- " DateStamp 4cdb7409\n"
- "\n"
- "Collecting data for crash dump ...\n");
+ "A problem has been detected and windows has been shut down to prevent\n"
+ "damage to your computer.\n"
+ "\n"
+ "SYSTEM_SERVICE_EXCEPTION\n"
+ "\n"
+ "If this is the first time you[ve seen this Stop error screen,\n"
+ "restart your computer. If this screen appears again, follow\n"
+ "these steps:\n"
+ "\n"
+ "Check to make sure any new hardware or software is properly installed.\n"
+ "If this is a new installation, ask your hardware or software"
+ " manufacturer\n"
+ "for any Windows NT updates you might need.\n"
+ "\n"
+ "If problems continue, disable or remove any newly installed hardware\n"
+ "or software. Disable BIOS memory options such as caching or shadowing.\n"
+ "If you need to use Safe Mode to remove or disable components, restart\n"
+ "your computer, press F8 to select Advanced Startup Options, and then\n"
+ "select Safe Mode.\n"
+ "\n"
+ "Technical information:\n"
+ "\n"
+ "*** STOP: 0x0000003B (0x00000000c000005,0xFFFFF880041C9062,"
+ "0xFFFFF88002E22F60,0x0000000000000000(\n"
+ "\n"
+ "*** dxgmms1.sys - Address FFFFF880041C9062 base at FFFFF8800418F000,"
+ " DateStamp 4cdb7409\n"
+ "\n"
+ "Collecting data for crash dump ...\n");
BSOD_PAUSE (bst, 4000000);
BSOD_TEXT (bst, LEFT,
"Initializing disk for for crash dump ...\n");
"Well actually, your screen isn't needed anymore.",
"u just got popped with some 0day shit!!",
"M'lady,",
+ "ALL UR APES ARE GONE!!1",
+ "Oops, all your apes are gone!",
+ "Oops, all your apes are gone!!",
+ "Oops, all ur tokens have been funged!",
+ "Oops, all your turkens have been funged!",
+ "Oops, all your tokens have been funged!",
+ "YOUR TOKENS ARE FUNGED. PRAY I DO NOT FUNGE THEM FURTHER.",
};
const char *header_quip = header_quips[random() % countof(header_quips)];
"you are bad and you should feel bad",
"you used the wifi at defcon",
"you lack official Clown Strike[TM] threaty threat technology",
+ "Capitalism is a death cult",
+ "Web3 is in full effect",
+ "paperclip maximizers gonna paperclip maximize",
+ "the line is pleased",
+ "line goes up",
+ "you didn't HODL",
+ "you didn't click hard enough and now Tinkerbelle is dead",
+ "of your tesla stonks",
+ "MAMMON HUNGERS",
};
- const char *excuse_quip = excuse_quips[random() % countof(excuse_quips)];
+ const char *excuse_quip = excuse_quips[random() % countof(excuse_quips)];
+ const char *excuse_quip_2 = excuse_quips[random() % countof(excuse_quips)];
/* WELL ACTUALLY, screensavers aren't really necessary anymore because... */
const char * const screensaver_quips[] = {
"payment, press <Check Payment>. Best time to check: 4-6am, Mon-Fri.\n",
"\n",
"*Why Did I Get This?\n",
- "You got this because ", "[Q]",
- ". Also you didn't click hard enough and now Tinkerbelle is dead.\n",
+ "You got this because ", "[Q]", ". Also ", "[Q2]", ".\n",
"\n",
"*But Aren't Screensavers Are Necessary?\n",
"WELL ACTUALLY, screensavers aren't really necessary anymore because ",
int top_height, bottom_height;
int x, y;
+ while (excuse_quip == excuse_quip_2)
+ excuse_quip_2 = excuse_quips[random() % countof(excuse_quips)];
+
if (bst->xgwa.width > 2560) n++; /* Retina displays */
for (i = 0; i < n; i++)
{
{
const char *s = lines[i];
if (!strcmp(s, "[C]")) s = currency;
- else if (!strcmp(s, "[Q]")) s = excuse_quip;
+ else if (!strcmp(s, "[Q]")) s = excuse_quip;
+ else if (!strcmp(s, "[Q2]")) s = excuse_quip_2;
else if (!strcmp(s, "[S]")) s = screensaver_quip;
if (*s == '*')
x + left_column_width + margin,
y + top_height + right_column_height + line_height * 2);
- sprintf(buf, "Send $%.2f of %s to this address:\n", 101+frand(888), currency);
+ sprintf(buf, "Send $%.2f of %s to this address:\n", 101+frand(888),
+ currency);
BSOD_TEXT (bst, LEFT, buf);
BSOD_COLOR (bst, fg2, bg2);
{ "GLaDOS", glados },
{ "Android", android },
{ "VMware", vmware },
+ { "VMwareArm", vmware_arm },
{ "Encom", encom },
{ "DVD", dvd },
{ "Tivo", tivo },
"*doGLaDOS: True",
"*doAndroid: False",
"*doVMware: True",
+ "*doVMwareArm: True",
"*doEncom: True",
"*doDVD: True",
"*doTivo: True",
".vmware.foreground2: Yellow",
".vmware.background: #a700a8", /* purple */
+ ".vmware-arm.foreground: #FFFFFF",
+ ".vmware-arm.foreground2: #FFFF00",
+ ".vmware-arm.background: #555555",
+ ".vmware-arm-psod.background: #a700a8",
+ ".vmware-arm-dbg.background: #000000",
+ ".vmware-arm-dbg.foreground: #ABABAB",
+ ".vmware-arm-term.background: #555555",
+ ".vmware-arm-term.foreground2: #AAAAAA",
+ ".vmware-arm-term.foreground3: #FF5757",
+
".tivo.background: #339020",
".tivo.foreground: #B8E6BA",
{ "-no-android", ".doAndroid", XrmoptionNoArg, "False" },
{ "-vmware", ".doVMware", XrmoptionNoArg, "True" },
{ "-no-vmware", ".doVMware", XrmoptionNoArg, "False" },
+ { "-vmware-arm", ".doVMwareArm", XrmoptionNoArg, "True" },
+ { "-no-vmware-arm", ".doVMwareArm", XrmoptionNoArg, "False" },
{ "-encom", ".doEncom", XrmoptionNoArg, "True" },
{ "-no-encom", ".doEncom", XrmoptionNoArg, "False" },
{ "-dvd", ".doDVD", XrmoptionNoArg, "True" },
bsod \- Blue Screen of Death emulator
.SH SYNOPSIS
.B bsod
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP]
-[\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install]
-[\-visual \fIvisual\fP] [\-delay \fIseconds\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP] [\-\-foreground \fIcolor\fP]
+[\-\-background \fIcolor\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-mono] [\-\-install]
+[\-\-visual \fIvisual\fP] [\-\-delay \fIseconds\fP]
+[\-\-fps]
.SH DESCRIPTION
The
.I bsod
.I bsod
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-mono
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-mono
If on a color display, pretend we're on a monochrome display.
.TP 8
-.B \-install
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-delay \fIdelay\fP
+.B \-\-delay \fIdelay\fP
The duration each crash-mode is displayed before selecting another.
.TP 8
-.B \-only \fIwhich\fP
-Tell it to run only one mode, e.g., \fI\-only HPUX\fP.
+.B \-\-only \fIwhich\fP
+Tell it to run only one mode, e.g., \fI\-\-only HPUX\fP.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH X RESOURCES
Notable X resources supported include the following, which control which
hacks are displayed and which aren't.
unless you're a fan of those systems.
There are command-line options for all of these:
-e.g., \fI\-bsd\fP, \fI\-no-bsd\fP. (Also note the \fI\-only\fP option.)
+e.g., \fI\-\-bsd\fP, \fI\-\-no-bsd\fP. (Also note the \fI\-\-only\fP option.)
.SH BUGS
Unlike the systems being simulated, \fIbsod\fP does not require a
reboot after running.
bubbles \- frying pan / soft drink simulation
.SH SYNOPSIS
.B bubbles
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-simple] [\-broken] [\-3D] [\-rise|\-drop] [-trails]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP] [\-\-foreground \fIcolor\fP]
+[\-\-background \fIcolor\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-mono] [\-\-install] [\-\-visual \fIvisual\fP] [\-\-simple] [\-\-broken] [\-3D] [\-\-rise|\-\-drop] [-trails]
+[\-\-fps]
.SH DESCRIPTION
\fIBubbles\fP sprays lots of little random bubbles all over the window which
then grow until they reach their maximum size and go pop. The inspiration
.I bubbles
was compiled, it accepts the following options:
.TP 8
-.B \-foreground
-Colour of circles if \fI\-simple\fP mode is selected.
+.B \-\-foreground
+Colour of circles if \fI\-\-simple\fP mode is selected.
.TP 8
-.B \-background
+.B \-\-background
Colour of window background.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-mono
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-mono
If on a color display, pretend we're on a monochrome display.
.TP 8
-.B \-install
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-delay microseconds
+.B \-\-delay microseconds
How much of a delay should be introduced between steps of the animation.
Default 800, or about 800 microsecond. Actually, this is the delay between each
group of 15 new bubbles since such a delay between each step results in a
very slow animation rate.
.TP 8
-.B \-nodelay
-Same as \fI\-delay 0\fP.
+.B \-\-nodelay
+Same as \fI\-\-delay 0\fP.
.TP 8
-.B \-simple
+.B \-\-simple
Don't use the default fancy pixmap bubbles. Just draw circles instead.
This may give more bearable performance if your hardware wasn't made for
this sort of thing.
.TP 8
-.B \-broken
+.B \-\-broken
Don't hide bubbles when they pop. This was a bug during development
but the results were actually quite attractive.
.TP 8
the flickering of each bubble as they are move and are redrawn. Your
mileage may vary.
.TP 8
-.B \-quiet
+.B \-\-quiet
Don't print messages explaining why one or several command line options
were ignored. This is disabled by default.
.TP 8
-.B \-rise | \-drop
+.B \-\-rise | \-\-drop
.TP 8
-.B \-trails
+.B \-\-trails
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH NOTES
If you find the pace of things too slow, remember that there is a delay
-even though you specify no \fI\-delay\fP option. Try using \fI\-nodelay\fP
+even though you specify no \fI\-\-delay\fP option. Try using \fI\-\-nodelay\fP
although beware of the effects of irritation of other users if you're on a
shared system as you bleed their CPU time away.
Some tools to assist in creation of new bubbles are included in the source
-distribution. These can either be loaded with the \fI\-file\fP or
-\fI\-directory\fP options (if available) or they can be used in place
+distribution. These can either be loaded with the \fI\-\-file\fP or
+\fI\-\-directory\fP options (if available) or they can be used in place
of the distributed default bubble (bubble_default.c).
You might like to copy these scripts to a permanent location and
use them. Read bubbles.README.
is used.
The hide/display algorithm could do with some work to avoid flickering
-when \fI\-nodelay\fP is set.
+when \fI\-\-nodelay\fP is set.
.SH ENVIRONMENT
.PP
.TP 8
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
bumps \- move distorting spotlight around desktop
.SH SYNOPSIS
.B bumps
-[\-display \fIhost:display.screen\fP]
-[\-foreground \fIcolor\fP]
-[\-background \fIcolor\fP]
-[\-window]
-[\-root]
-[\-mono]
-[\-install]
-[\-visual \fIvisual\fP]
-[\-delay \fIusecs\fP]
-[\-duration \fIsecs\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-foreground \fIcolor\fP]
+[\-\-background \fIcolor\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-mono]
+[\-\-install]
+[\-\-visual \fIvisual\fP]
+[\-\-delay \fIusecs\fP]
+[\-\-duration \fIsecs\fP]
+[\-\-fps]
.SH DESCRIPTION
The \fIbumps\fP program takes an image and exposes small, distorted
sections of it as if through an odd wandering spotlight beam.
.I bumps
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-mono
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-mono
If on a color display, pretend we're on a monochrome display.
.TP 8
-.B \-install
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-delay \fImicroseconds\fP
+.B \-\-delay \fImicroseconds\fP
Slow it down.
.TP 8
-.B \-duration \fIseconds\fP
+.B \-\-duration \fIseconds\fP
How long to run before loading a new image. Default 120 seconds.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1),
ccurve \- self-similar linear fractals.
.SH SYNOPSIS
.B ccurve
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-pause \fInumber\fP]
-[\-limit \fInumber\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-pause \fInumber\fP]
+[\-\-limit \fInumber\fP]
+[\-\-fps]
.SH DESCRIPTION
Generates self-similar linear fractals, including the classic ``C Curve.''
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Delay. 0 - 60. Default: 1.
.TP 8
-.B \-pause \fInumber\fP
+.B \-\-pause \fInumber\fP
Duration. 1 - 60. Default: 3.
.TP 8
-.B \-limit \fInumber\fP
+.B \-\-limit \fInumber\fP
Density. 3 - 300000. Default: 200000.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
celtic \- draws celtic cross-stich patterns
.SH SYNOPSIS
.B ifs
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-delay2 \fInumber\fP]
-[\-ncolors \fInumber\fP]
-[\-graph \fImode\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-delay2 \fInumber\fP]
+[\-\-ncolors \fInumber\fP]
+[\-\-graph \fImode\fP]
+[\-\-fps]
.SH DESCRIPTION
The \fIceltic\fP program repeatedly draws random cross-stitch patterns.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 10000.
.TP 8
-.B \-delay2 \fInumber\fP
+.B \-\-delay2 \fInumber\fP
Delay between patterns, in seconds. Default: 5.
.TP 8
-.B \-ncolors \fInumber\fP
+.B \-\-ncolors \fInumber\fP
Number of colours to use. Default: 20.
.TP 8
-.B \-graph
+.B \-\-graph
Whether to render the underlying graph. Default: no.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
cloudlife \- a cellular automaton based on Conway's Life
.SH SYNOPSIS
.B cloudlife
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP] [\-cycle-delay \fImicroseconds\fP] [\-cycle-colors \fIinteger\fP][\-cell-size \fIinteger\fP] [\-initial-density \fIinteger\fP] [\-max-age \fIinteger\fP]
+[\-\-display \fIhost:display.screen\fP] [\-\-foreground \fIcolor\fP]
+[\-\-background \fIcolor\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-mono] [\-\-install] [\-\-visual \fIvisual\fP] [\-\-ncolors \fIinteger\fP] [\-\-cycle-delay \fImicroseconds\fP] [\-\-cycle-colors \fIinteger\fP][\-\-cell-size \fIinteger\fP] [\-\-initial-density \fIinteger\fP] [\-\-max-age \fIinteger\fP]
-[\-fps]
+[\-\-fps]
.SH DESCRIPTION
The \fIcloudlife\fP program draws a cellular
automaton based on Conway's Life, except that
.I cloudlife
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-mono
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-mono
If on a color display, pretend we're on a monochrome display.
.TP 8
-.B \-install
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-cycle-delay \fIinteger\fP
+.B \-\-cycle-delay \fIinteger\fP
Time in microseconds to sleep between ticks. Default 25000.
.TP 8
-.B \-cycle-colors \fIinteger\fP
+.B \-\-cycle-colors \fIinteger\fP
How many ticks should elapse between cycling colors. 0 to disable
color cycling. Default 2.
.TP 8
-.B \-ncolors \fIinteger\fP
+.B \-\-ncolors \fIinteger\fP
How many colors should be used (if possible). Default 64.
The colors are chosen randomly.
.TP 8
-.B \-cell-size \fIinteger\fP
+.B \-\-cell-size \fIinteger\fP
Size of each cell, in powers of 2. Default 3 (8-pixel cells).
.TP 8
-.B \-initial-density \fIinteger\fP
+.B \-\-initial-density \fIinteger\fP
Percentage of cells that are alive at start and when the
field is repopulated. Default 30.
.TP 8
-.B \-max-age \fIinteger\fP
+.B \-\-max-age \fIinteger\fP
Maximum age for a cell. Default 64.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1),
compass \- draws a spinning compass.
.SH SYNOPSIS
.B compass
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-no-db]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-no-db]
+[\-\-fps]
.SH DESCRIPTION
This draws a compass, with all elements spinning about randomly, for that
``lost and nauseous'' feeling.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 20000 (0.02 seconds.).
.TP 8
-.B \-db | \-no-db
+.B \-\-db | \-\-no-db
Double Buffer. Boolean.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
<screensaver name="abstractile" _label="Abstractile">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=NgSetBY6VP4"/>
- <number id="speed" type="slider" arg="-speed %"
+ <number id="speed" type="slider" arg="--speed %"
_label="Speed" _low-label="Slow" _high-label="Fast"
- low="0" high="5" default="3"
- convert="ratio"/>
+ low="0" high="5" default="3"/>
- <number id="sleep" type="slider" arg="-sleep %"
+ <number id="sleep" type="slider" arg="--sleep %"
_label="Linger" _low-label="0 seconds" _high-label="60 seconds"
low="0" high="60" default="3"/>
<select id="tile">
<option id="random" _label="Random tile layout"/>
- <option id="random" _label="Flat tiles" arg-set="-tile flat"/>
- <option id="random" _label="Thin tiles" arg-set="-tile thin"/>
- <option id="random" _label="Outline tiles" arg-set="-tile outline"/>
- <option id="random" _label="Block tiles" arg-set="-tile block"/>
- <option id="random" _label="Neon tiles" arg-set="-tile neon"/>
- <option id="random" _label="Tiled tiles" arg-set="-tile tiled"/>
+ <option id="random" _label="Flat tiles" arg-set="--tile flat"/>
+ <option id="random" _label="Thin tiles" arg-set="--tile thin"/>
+ <option id="random" _label="Outline tiles" arg-set="--tile outline"/>
+ <option id="random" _label="Block tiles" arg-set="--tile block"/>
+ <option id="random" _label="Neon tiles" arg-set="--tile neon"/>
+ <option id="random" _label="Tiled tiles" arg-set="--tile tiled"/>
</select>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="anemone" _label="Anemone">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=usITxM2YJZs"/>
-<!--
- -withdraw 1200
- -turnspeed 50
--->
-
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Speed" _low-label="Slow" _high-label="Fast"
low="0" high="80000" default="40000"
convert="invert"/>
- <number id="arms" type="slider" arg="-arms %"
+ <number id="arms" type="slider" arg="--arms %"
_label="Arms" _low-label="Few" _high-label="Many"
low="2" high="500" default="128"/>
- <number id="finpoints" type="slider" arg="-finpoints %"
+ <number id="finpoints" type="slider" arg="--finpoints %"
_label="Tentacles" _low-label="Few" _high-label="Many"
low="3" high="200" default="64"/>
</vgroup>
<vgroup>
- <number id="width" type="slider" arg="-width %"
+ <number id="width" type="slider" arg="--width %"
_label="Thickness" _low-label="Thin" _high-label="Thick"
low="1" high="10" default="2"/>
- <number id="withdraw" type="slider" arg="-withdraw %"
+ <number id="withdraw" type="slider" arg="--withdraw %"
_label="Withdraw freqency" _low-label="Often" _high-label="Rarely"
low="12" high="10000" default="1200"/>
- <number id="turnspeed" type="slider" arg="-turnspeed %"
+ <number id="turnspeed" type="slider" arg="--turnspeed %"
_label="Turn speed" _low-label="Slow" _high-label="Fast"
low="0" high="1000" default="50"/>
-
- <!--
- <number id="ncolors" type="slider" arg="-ncolors %"
- _label="Number of colors" _low-label="Two" _high-label="Many"
- low="2" high="255" default="64"/>
- -->
-
</vgroup>
</hgroup>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="anemotaxis" _label="Anemotaxis">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=hIqmIQbQkW8"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="20000"
convert="invert"/>
- <number id="distance" type="slider" arg="-distance %"
+ <number id="distance" type="slider" arg="--distance %"
_label="Distance" _low-label="Near" _high-label="Far"
low="10" high="250" default="40"/>
- <number id="sources" type="slider" arg="-sources %"
+ <number id="sources" type="slider" arg="--sources %"
_label="Sources" _low-label="Few" _high-label="Many"
low="1" high="100" default="25"/>
- <number id="searchers" type="slider" arg="-searchers %"
+ <number id="searchers" type="slider" arg="--searchers %"
_label="Searchers" _low-label="Few" _high-label="Many"
low="1" high="100" default="25"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="ant" _label="Ant">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=PaG7RCO4ezs"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="20000"
convert="invert"/>
- <number id="cycles" type="slider" arg="-cycles %"
+ <number id="cycles" type="slider" arg="--cycles %"
_label="Timeout" _low-label="Small" _high-label="Large"
low="0" high="800000" default="40000"/>
<hgroup>
- <boolean id="sharpturn" _label="Sharp turns" arg-set="-sharpturn"/>
- <boolean id="truchet" _label="Truchet lines" arg-set="-truchet"/>
- <boolean id="eyes" _label="Draw eyes" arg-set="-eyes"/>
+ <boolean id="sharpturn" _label="Sharp turns" arg-set="--sharpturn"/>
+ <boolean id="truchet" _label="Truchet lines" arg-set="--truchet"/>
+ <boolean id="eyes" _label="Draw eyes" arg-set="--eyes"/>
</hgroup>
</vgroup>
<vgroup>
- <number id="ncolors" type="slider" arg="-ncolors %"
+ <number id="ncolors" type="slider" arg="--ncolors %"
_label="Number of colors" _low-label="Three" _high-label="Many"
low="3" high="255" default="64"/>
<hgroup>
- <number id="count" type="spinbutton" arg="-count %"
+ <number id="count" type="spinbutton" arg="--count %"
_label="Ants count" low="-20" high="20" default="-3"/>
- <number id="size" type="spinbutton" arg="-size %"
+ <number id="size" type="spinbutton" arg="--size %"
_label="Ant size" low="-18" high="18" default="-12"/>
</hgroup>
<select id="neighbors">
<option id="rand" _label="Random cell shape"/>
<option id="three" _label="Three sided cells"
- arg-set="-neighbors 3"/>
+ arg-set="--neighbors 3"/>
<option id="four" _label="Four sided cells"
- arg-set="-neighbors 4"/>
+ arg-set="--neighbors 4"/>
<option id="six" _label="Six sided cells"
- arg-set="-neighbors 6"/>
+ arg-set="--neighbors 6"/>
<option id="nine" _label="Nine sided cells"
- arg-set="-neighbors 9"/>
+ arg-set="--neighbors 9"/>
<option id="twelve" _label="Twelve sided cells"
- arg-set="-neighbors 12"/>
+ arg-set="--neighbors 12"/>
</select>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</vgroup>
</hgroup>
<screensaver name="antinspect" _label="Ant Inspect" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=Ecw9dDc0db0"/>
- <number id="speed" type="slider" arg="-delay %"
+ <number id="speed" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="20000"
convert="invert"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
- <boolean id="shadows" _label="Draw shadows" arg-set="-shadows"/>
+ <boolean id="shadows" _label="Draw shadows" arg-set="--shadows"/>
<xscreensaver-updater />
<screensaver name="antmaze" _label="Ant Maze" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=Bwa5-n6UUj8"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="20000"
convert="invert"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="antspotlight" _label="Ant Spotlight" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=NYisFYtODTA"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="20000"
convert="invert"/>
<xscreensaver-image />
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="apollonian" _label="Apollonian">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=aeWnjSROR8U"/>
- <boolean id="label" _label="Draw labels" arg-unset="-no-label"/>
+ <boolean id="label" _label="Draw labels" arg-unset="--no-label"/>
<boolean id="altgeom" _label="Include alternate geometries"
- arg-unset="-no-altgeom"/>
+ arg-unset="--no-altgeom"/>
-<!-- don't know what -count does -->
-
- <number id="cycles" type="slider" arg="-cycles %"
+ <number id="cycles" type="slider" arg="--cycles %"
_label="Depth" _low-label="Shallow" _high-label="Deep"
low="1" high="20" default="20"/>
- <number id="ncolors" type="slider" arg="-ncolors %"
+ <number id="ncolors" type="slider" arg="--ncolors %"
_label="Number of colors" _low-label="Two" _high-label="Many"
low="2" high="255" default="64"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Speed" _low-label="Slow" _high-label="Fast"
low="0" high="1000000" default="1000000"
convert="invert"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="apple2" _label="Apple ][">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=p3QZqhp67l8"/>
<vgroup>
<select id="mode">
<option id="random" _label="Choose display mode randomly"/>
- <option id="text" _label="Display scrolling text" arg-set="-mode text"/>
- <option id="slideshow" _label="Display images" arg-set="-mode slideshow"/>
- <option id="basic" _label="Run basic programs" arg-set="-mode basic"/>
+ <option id="text" _label="Display scrolling text" arg-set="--mode text"/>
+ <option id="slideshow" _label="Display images" arg-set="--mode slideshow"/>
+ <option id="basic" _label="Run basic programs" arg-set="--mode basic"/>
</select>
<xscreensaver-text />
</vgroup>
<vgroup>
- <number id="duration" type="slider" arg="-duration %"
+ <number id="duration" type="slider" arg="--duration %"
_label="Duration" _low-label="10 seconds" _high-label="10 minutes"
low="10" high="600" default="60"/>
<xscreensaver-image />
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
</vgroup>
<vgroup>
- <number id="tvcolor" type="slider" arg="-tv-color %"
+ <number id="tvcolor" type="slider" arg="--tv-color %"
_label="Color Knob" _low-label="Low" _high-label="High"
low="0" high="400" default="70"/>
- <number id="tvtint" type="slider" arg="-tv-tint %"
+ <number id="tvtint" type="slider" arg="--tv-tint %"
_label="Tint Knob" _low-label="Low" _high-label="High"
low="0" high="360" default="5"/>
- <number id="tvbrightness" type="slider" arg="-tv-brightness %"
+ <number id="tvbrightness" type="slider" arg="--tv-brightness %"
_label="Brightness Knob" _low-label="Low" _high-label="High"
low="-75.0" high="100.0" default="3.0"/>
- <number id="tvcontrast" type="slider" arg="-tv-contrast %"
+ <number id="tvcontrast" type="slider" arg="--tv-contrast %"
_label="Contrast Knob" _low-label="Low" _high-label="High"
low="0" high="500" default="150"/>
</vgroup>
<screensaver name="atlantis" _label="Atlantis" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=U78xPez5UGg"/>
- <number id="sharkspeed" type="slider" arg="-delay %"
+ <number id="sharkspeed" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="25000"
convert="invert"/>
- <number id="whalespeed" type="slider" arg="-whalespeed %"
+ <number id="whalespeed" type="slider" arg="--whalespeed %"
_label="Whale speed" _low-label="Slow" _high-label="Fast"
low="0" high="1000" default="250"/>
- <number id="sharkproximity" type="slider" arg="-size %"
+ <number id="sharkproximity" type="slider" arg="--size %"
_label="Shark proximity" _low-label="Shy" _high-label="Agressive"
low="100" high="10000" default="6000"/>
- <number id="sharkcount" type="slider" arg="-count %"
+ <number id="sharkcount" type="slider" arg="--count %"
_label="Number of sharks" _low-label="None" _high-label="20"
low="0" high="20" default="4"/>
<hgroup>
<select id="water">
<option id="shimmer" _label="Shimmering water"/>
- <option id="clear" _label="Clear water" arg-set="-no-texture"/>
+ <option id="clear" _label="Clear water" arg-set="--no-texture"/>
</select>
<select id="bg">
- <option id="flat" _label="Flat background" arg-set="-no-gradient"/>
+ <option id="flat" _label="Flat background" arg-set="--no-gradient"/>
<option id="gradient" _label="Gradient background"/>
</select>
</hgroup>
<hgroup>
- <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="wire" _label="Wireframe" arg-set="--wireframe"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</hgroup>
<xscreensaver-updater />
<screensaver name="attraction" _label="Attraction">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=KAT9nkXCdms"/>
<hgroup>
<select id="mode">
<option id="balls" _label="Balls"/>
- <option id="lines" _label="Lines" arg-set="-mode lines"/>
- <option id="tails" _label="Tails" arg-set="-mode tails"/>
- <option id="polygons" _label="Polygons" arg-set="-mode polygons"/>
- <option id="splines" _label="Splines" arg-set="-mode splines"/>
+ <option id="lines" _label="Lines" arg-set="--mode lines"/>
+ <option id="tails" _label="Tails" arg-set="--mode tails"/>
+ <option id="polygons" _label="Polygons" arg-set="--mode polygons"/>
+ <option id="splines" _label="Splines" arg-set="--mode splines"/>
<option id="fsplines" _label="Filled splines"
- arg-set="-mode filled-splines"/>
+ arg-set="--mode filled-splines"/>
</select>
<select id="wallmode">
<option id="walls" _label="Bounce off walls"/>
- <option id="nowalls" _label="Ignore screen edges" arg-set="-nowalls"/>
+ <option id="nowalls" _label="Ignore screen edges" arg-set="--nowalls"/>
</select>
</hgroup>
<hgroup>
<vgroup>
- <number id="points" type="spinbutton" arg="-points %"
+ <number id="points" type="spinbutton" arg="--points %"
_label="Ball count" low="0" high="200" default="0"/>
- <number id="viscosity" type="slider" arg="-viscosity %"
+ <number id="viscosity" type="slider" arg="--viscosity %"
_label="Environmental viscosity"
_low-label="Low" _high-label="High"
low="0.0" high="1.0" default="1.0"
convert="invert"/>
- <number id="segments" type="slider" arg="-segments %"
+ <number id="segments" type="slider" arg="--segments %"
_label="Trail length" _low-label="Short" _high-label="Long"
low="2" high="1000" default="500"/>
- <number id="ncolors" type="slider" arg="-colors %"
+ <number id="ncolors" type="slider" arg="--colors %"
_label="Number of colors" _low-label="Two" _high-label="Many"
low="1" high="255" default="200"/>
</vgroup>
<vgroup>
- <number id="size" type="slider" arg="-size %"
+ <number id="size" type="slider" arg="--size %"
_low-label="Ball mass" _high-label="High"
low="0" high="100" default="0"/>
- <number id="threshold" type="slider" arg="-threshold %"
+ <number id="threshold" type="slider" arg="--threshold %"
_label="Repulsion threshold"
_low-label="Small" _high-label="Large"
low="0" high="600" default="200"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Speed" _low-label="Slow" _high-label="Fast"
low="0" high="40000" default="10000"
convert="invert"/>
</hgroup>
<hgroup>
- <boolean id="orbit" _label="Orbital mode" arg-set="-orbit"/>
- <number id="radius" type="spinbutton" arg="-radius %"
+ <boolean id="orbit" _label="Orbital mode" arg-set="--orbit"/>
+ <number id="radius" type="spinbutton" arg="--radius %"
_label="Radius" low="0" high="1000" default="0"/>
- <number id="vmult" type="slider" arg="-vmult %"
+ <number id="vmult" type="slider" arg="--vmult %"
_low-label="Outward" _high-label="Inward"
low="-5.0" high="5.0" default="0.9"/>
</hgroup>
- <!-- #### -vx [?] -->
- <!-- #### -vy [?] -->
- <!-- #### -glow -->
- <!-- #### -nomaxspeed -->
- <!-- #### -correct-bounce -->
- <!-- #### -graphmode [none] -->
-
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="atunnel" _label="Atunnel" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=mpCRbi3jkuc"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="10000"
convert="invert"/>
- <boolean id="tex" _label="Textured" arg-unset="-no-texture"/>
- <boolean id="light" _label="Lighting" arg-set="-light"/>
- <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="tex" _label="Textured" arg-unset="--no-texture"/>
+ <boolean id="light" _label="Lighting" arg-set="--light"/>
+ <boolean id="wire" _label="Wireframe" arg-set="--wireframe"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="barcode" _label="Barcode">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=gmtAySJdsfg"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="10000"
convert="invert"/>
<select id="mode">
<option id="scroll" _label="Scrolling barcodes"/>
- <option id="scroll" _label="Barcode grid" arg-set="-mode grid"/>
- <option id="clock12" _label="Barcode clock (AM/PM)" arg-set="-mode clock12"/>
- <option id="clock24" _label="Barcode clock (24 hour)" arg-set="-mode clock24"/>
+ <option id="scroll" _label="Barcode grid" arg-set="--mode grid"/>
+ <option id="clock12" _label="Barcode clock (AM/PM)" arg-set="--mode clock12"/>
+ <option id="clock24" _label="Barcode clock (24 hour)" arg-set="--mode clock24"/>
</select>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="beats" _label="Beats" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=u7N5l0LXryg"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="30000"
convert="invert"/>
- <number id="count" type="slider" arg="-count %"
+ <number id="count" type="slider" arg="--count %"
_label="Number of balls" _low-label="Few" _high-label="Many"
low="1" high="100" default="30"/>
<select id="cycle">
<option id="random" _label="Random cycle style"/>
- <option _label="Clockwise cycle" arg-set="-cycle 0"/>
- <option _label="Rain dance cycle" arg-set="-cycle 1"/>
- <option _label="Metronome cycle" arg-set="-cycle 2"/>
- <option _label="Galaxy cycle" arg-set="-cycle 3"/>
+ <option _label="Clockwise cycle" arg-set="--cycle 0"/>
+ <option _label="Rain dance cycle" arg-set="--cycle 1"/>
+ <option _label="Metronome cycle" arg-set="--cycle 2"/>
+ <option _label="Galaxy cycle" arg-set="--cycle 3"/>
</select>
<hgroup>
- <boolean id="tick" _label="Tick" arg-unset="-no-tick"/>
- <boolean id="blur" _label="Motion Blur" arg-unset="-no-blur"/>
- <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
+ <boolean id="tick" _label="Tick" arg-unset="--no-tick"/>
+ <boolean id="blur" _label="Motion Blur" arg-unset="--no-blur"/>
+ <boolean id="wire" _label="Wireframe" arg-set="--wireframe"/>
</hgroup>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="binaryhorizon" _label="Binary Horizon">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=upB7CSoxNTs"/>
- <number id="growth-delay" type="slider" arg="-growth-delay %"
+ <number id="growth-delay" type="slider" arg="--growth-delay %"
_label="Growth delay" _low-label="Low" _high-label="High"
low="0" high="100000" default="10000" />
- <number id="particles-number" type="slider" arg="-particles-number %"
+ <number id="particles-number" type="slider" arg="--particles-number %"
_label="Number of particles" _low-label="Few" _high-label="Lots"
low="100" high="20000" default="5000" />
- <number id="duration" type="slider" arg="-duration %"
+ <number id="duration" type="slider" arg="--duration %"
_label="Duration" _low-label="1 sec" _high-label="2 minutes"
low="1" high="120" default="30" />
- <boolean id="color" _label="Random colors" arg-unset="-no-color"/>
- <boolean id="bicolor" _label="Two contrasting colors" arg-unset="-monocolor"/>
- <boolean id="no-fade" _label="Randomize every particle's color" arg-set="-no-fade"/>
- <boolean id="fps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="color" _label="Random colors" arg-unset="--no-color"/>
+ <boolean id="bicolor" _label="Two contrasting colors" arg-unset="--monocolor"/>
+ <boolean id="no-fade" _label="Randomize every particle's color" arg-set="--no-fade"/>
+ <boolean id="fps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<_description>
<screensaver name="binaryring" _label="Binary Ring">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=KPiJb0Qm1SE"/>
- <number id="growth-delay" type="slider" arg="-growth-delay %"
+ <number id="growth-delay" type="slider" arg="--growth-delay %"
_label="Growth delay" _low-label="Low" _high-label="High"
low="0" high="100000" default="10000" />
- <number id="ring-radius" type="slider" arg="-ring-radius %"
+ <number id="ring-radius" type="slider" arg="--ring-radius %"
_label="Ring Radius" _low-label="Short" _high-label="Long"
low="0" high="400" default="40" />
- <number id="particles-number" type="slider" arg="-particles-number %"
+ <number id="particles-number" type="slider" arg="--particles-number %"
_label="Number of particles" _low-label="Few" _high-label="Lots"
low="500" high="20000" default="5000" />
- <boolean id="color" _label="Fade with colors" arg-unset="-no-color"/>
+ <boolean id="color" _label="Fade with colors" arg-unset="--no-color"/>
<xscreensaver-updater />
<screensaver name="blaster" _label="Blaster">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=bp3J3si2Hr0"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="10000"
convert="invert"/>
- <number id="num_robots" type="spinbutton" arg="-num_robots %"
+ <number id="num_robots" type="spinbutton" arg="--num_robots %"
_label="Robots" low="2" high="50" default="5"/>
- <number id="num_lasers" type="spinbutton" arg="-num_lasers %"
+ <number id="num_lasers" type="spinbutton" arg="--num_lasers %"
_label="Lasers" low="1" high="100" default="3"/>
- <number id="num_stars" type="slider" arg="-num_stars %"
+ <number id="num_stars" type="slider" arg="--num_stars %"
_label="Stars" _low-label="Few" _high-label="Many"
low="5" high="200" default="50"/>
- <!-- #### -move_stars_x [2] -->
- <!-- #### -move_stars_y [1] -->
- <!-- #### -move_stars_random [0] -->
- <!-- #### -star_color [white] -->
-
- <!-- #### -explode_size_1 [27] -->
- <!-- #### -explode_size_2 [19] -->
- <!-- #### -explode_size_3 [7] -->
- <!-- #### -explode_color_1 [yellow] -->
- <!-- #### -explode_color_2 [orange] -->
-
- <!-- #### -r_color0 [magenta] -->
- <!-- #### -r_color1 [orange] -->
- <!-- #### -r_color2 [yellow] -->
- <!-- #### -r_color3 [white] -->
- <!-- #### -r_color4 [blue] -->
- <!-- #### -r_color5 [cyan] -->
- <!-- #### -l_color0 [green] -->
- <!-- #### -l_color1 [red] -->
-
- <!-- #### -mother_ship -->
- <!-- #### -mother_ship_width [25] -->
- <!-- #### -mother_ship_height [7] -->
- <!-- #### -mother_ship_laser [15] -->
- <!-- #### -mother_ship_period [150] -->
- <!-- #### -mother_ship_hits [10] -->
- <!-- #### -mother_ship_color0 [darkblue] -->
- <!-- #### -mother_ship_color1 [white] -->
-
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="blinkbox" _label="Blink Box" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=lgjbHMcSd8U"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="30000"
convert="invert"/>
- <number id="boxsize" type="slider" arg="-boxsize %"
+ <number id="boxsize" type="slider" arg="--boxsize %"
_label="Box size" _low-label="Small" _high-label="Large"
low="1" high="8" default="2"/>
<hgroup>
- <boolean id="fade" _label="Fade" arg-unset="-no-fade"/>
- <boolean id="blur" _label="Motion blur" arg-unset="-no-blur"/>
- <boolean id="dissolve" _label="Dissolve" arg-set="-dissolve"/>
- <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
+ <boolean id="fade" _label="Fade" arg-unset="--no-fade"/>
+ <boolean id="blur" _label="Motion blur" arg-unset="--no-blur"/>
+ <boolean id="dissolve" _label="Dissolve" arg-set="--dissolve"/>
+ <boolean id="wire" _label="Wireframe" arg-set="--wireframe"/>
</hgroup>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="blitspin" _label="Blit Spin">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=UTtcwb-UWW8"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Fuzzy rotation speed" _low-label="Slow" _high-label="Fast"
low="1" high="800000" default="500000"
convert="invert"/>
- <number id="delay2" type="slider" arg="-delay2 %"
+ <number id="delay2" type="slider" arg="--delay2 %"
_label="90 degree rotation speed" _low-label="Slow" _high-label="Fast"
low="1" high="800000" default="500000"
convert="invert"/>
- <number id="duration" type="slider" arg="-duration %"
+ <number id="duration" type="slider" arg="--duration %"
_label="Duration" _low-label="10 seconds" _high-label="10 minutes"
low="10" high="600" default="120"/>
</vgroup>
<vgroup>
- <!-- <file id="bitmap" _label="Bitmap to rotate" arg="-bitmap %"/> -->
<xscreensaver-image />
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</vgroup>
</hgroup>
<screensaver name="blocktube" _label="Block Tube" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=L0JUBhpZlMw"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="40000"
convert="invert"/>
- <number id="holdtime" type="slider" arg="-holdtime %"
+ <number id="holdtime" type="slider" arg="--holdtime %"
_label="Color hold time" _low-label="Short" _high-label="Long"
low="10" high="2000" default="1000"/>
- <number id="changetime" type="slider" arg="-changetime %"
+ <number id="changetime" type="slider" arg="--changetime %"
_label="Color change time" _low-label="Short" _high-label="Long"
low="10" high="1000" default="200"/>
- <boolean id="tex" _label="Textured" arg-unset="-no-texture"/>
- <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="tex" _label="Textured" arg-unset="--no-texture"/>
+ <boolean id="wire" _label="Wireframe" arg-set="--wireframe"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="boing" _label="Boing" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=J3KAsV31d6M"/>
- <number id="size" type="slider" arg="-size %"
+ <number id="size" type="slider" arg="--size %"
_label="Size" _low-label="Tiny" _high-label="Huge"
low="0.02" high="0.9" default="0.5"/>
- <number id="speed" type="slider" arg="-speed %"
+ <number id="speed" type="slider" arg="--speed %"
_label="Speed" _low-label="Slow" _high-label="Fast"
low="0.1" high="10.0" default="1.0"
convert="ratio"/>
<vgroup>
<hgroup>
- <number id="meridians" type="spinbutton" arg="-meridians %"
+ <number id="meridians" type="spinbutton" arg="--meridians %"
_label="Meridians" low="1" high="90" default="16"/>
- <number id="parallels" type="spinbutton" arg="-parallels %"
+ <number id="parallels" type="spinbutton" arg="--parallels %"
_label="Parallels" low="1" high="90" default="8"/>
</hgroup>
<hgroup>
- <boolean id="smoothing" _label="Smoothing" arg-set="-smooth"/>
- <boolean id="lighting" _label="Lighting" arg-set="-lighting"/>
- <boolean id="scanlines" _label="Scanlines" arg-unset="-no-scanlines"/>
+ <boolean id="smoothing" _label="Smoothing" arg-set="--smooth"/>
+ <boolean id="lighting" _label="Lighting" arg-set="--lighting"/>
+ <boolean id="scanlines" _label="Scanlines" arg-unset="--no-scanlines"/>
</hgroup>
<hgroup>
- <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="wire" _label="Wireframe" arg-set="--wireframe"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</hgroup>
</vgroup>
<screensaver name="bouboule" _label="Bouboule">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=MdmIBmlkyFw"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="20000"
convert="invert"/>
- <number id="count" type="slider" arg="-count %"
+ <number id="count" type="slider" arg="--count %"
_label="Number of spots" _low-label="Few" _high-label="Many"
low="1" high="400" default="100"/>
- <number id="ncolors" type="slider" arg="-ncolors %"
+ <number id="ncolors" type="slider" arg="--ncolors %"
_label="Number of colors" _low-label="Two" _high-label="Many"
low="1" high="255" default="64"/>
- <boolean id="3d" _label="Do Red/Blue 3D separation" arg-unset="-no-3d"/>
+ <boolean id="3d" _label="Do Red/Blue 3D separation" arg-unset="--no-3d"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="bouncingcow" _label="Bouncing Cow" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=O_b5UWhv49w"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="30000"
convert="invert"/>
- <number id="speed" type="slider" arg="-speed %"
+ <number id="speed" type="slider" arg="--speed %"
_label="Bounce speed" _low-label="Slow" _high-label="Fast"
low="0.05" high="2.0" default="1.0"
convert="ratio"/>
- <number id="count" type="slider" arg="-count %"
+ <number id="count" type="slider" arg="--count %"
_label="Number of cows" _low-label="Moo" _high-label="Herd"
low="1" high="9" default="1"/>
<boolean id="mathematical"
_label="Mathematically ideal cows (spherical, frictionless)"
- arg-set="-mathematical"/>
+ arg-set="--mathematical"/>
- <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="wire" _label="Wireframe" arg-set="--wireframe"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="boxed" _label="Boxed" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=CU4QFtZm9So"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="15000"
convert="invert"/>
- <number id="speed" type="slider" arg="-speed %"
+ <number id="speed" type="slider" arg="--speed %"
_label="Speed" _low-label="Slow" _high-label="Fast"
low="0.001" high="4.0" default="0.5"
convert="ratio"/>
- <number id="balls" type="slider" arg="-balls %"
+ <number id="balls" type="slider" arg="--balls %"
_label="Number of balls" _low-label="Few" _high-label="Lots"
low="3" high="40" default="20"/>
- <number id="ballsize" type="slider" arg="-ballsize %"
+ <number id="ballsize" type="slider" arg="--ballsize %"
_label="Ball size" _low-label="Tiny" _high-label="Huge"
low="1.0" high="5.0" default="3.0"/>
<vgroup>
- <number id="explosion" type="slider" arg="-explosion %"
+ <number id="explosion" type="slider" arg="--explosion %"
_label="Explosion force" _low-label="Popcorn" _high-label="Nuke"
low="1.0" high="50.0" default="15.0"/>
- <number id="decay" type="slider" arg="-decay %"
+ <number id="decay" type="slider" arg="--decay %"
_label="Explosion decay" _low-label="Linger" _high-label="Pop!"
low="0.0" high="1.0" default="0.07"/>
- <number id="momentum" type="slider" arg="-momentum %"
+ <number id="momentum" type="slider" arg="--momentum %"
_label="Explosion momentum" _low-label="None" _high-label="Full"
low="0.0" high="1.0" default="0.6"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
- <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
+ <boolean id="wire" _label="Wireframe" arg-set="--wireframe"/>
</vgroup>
</hgroup>
<screensaver name="boxfit" _label="Box Fit">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=8GkcbBbcwBk"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="20000"
convert="invert"/>
<hgroup>
- <number id="count" type="spinbutton" arg="-count %"
+ <number id="count" type="spinbutton" arg="--count %"
_label="Boxes" low="1" high="1000" default="50"/>
- <number id="growby" type="spinbutton" arg="-growby %"
+ <number id="growby" type="spinbutton" arg="--growby %"
_label="Grow by" low="1" high="10" default="1"/>
</hgroup>
<hgroup>
- <number id="spacing" type="spinbutton" arg="-spacing %"
+ <number id="spacing" type="spinbutton" arg="--spacing %"
_label="Spacing" low="1" high="10" default="1"/>
- <number id="border" type="spinbutton" arg="-border %"
+ <number id="border" type="spinbutton" arg="--border %"
_label="Border" low="1" high="10" default="1"/>
</hgroup>
<hgroup>
<select id="mode">
<option id="random" _label="Boxes or circles"/>
- <option id="boxes" _label="Boxes only" arg-set="-mode squares"/>
- <option id="circles" _label="Circles only" arg-set="-mode circles"/>
+ <option id="boxes" _label="Boxes only" arg-set="--mode squares"/>
+ <option id="circles" _label="Circles only" arg-set="--mode circles"/>
</select>
<select id="mode2">
<option id="gradient" _label="Color gradient"/>
- <option id="image" _label="Grab images" arg-set="-grab"/>
+ <option id="image" _label="Grab images" arg-set="--grab"/>
</select>
</hgroup>
</vgroup>
<vgroup>
<xscreensaver-image />
- <boolean id="peek" _label="Peek at underlying images" arg-set="-peek"/>
+ <boolean id="peek" _label="Peek at underlying images" arg-set="--peek"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</vgroup>
</hgroup>
<screensaver name="braid" _label="Braid">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=PUhJq56ViGM"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="1000"
convert="invert"/>
- <number id="cycles" type="slider" arg="-cycles %"
+ <number id="cycles" type="slider" arg="--cycles %"
_label="Duration" _low-label="Short" _high-label="Long"
low="0" high="500" default="100"/>
- <number id="ncolors" type="slider" arg="-ncolors %"
+ <number id="ncolors" type="slider" arg="--ncolors %"
_label="Number of colors" _low-label="Two" _high-label="Many"
low="1" high="255" default="64"/>
<hgroup>
- <number id="count" type="spinbutton" arg="-count %"
+ <number id="count" type="spinbutton" arg="--count %"
_label="Number of rings" low="3" high="15" default="15"/>
- <number id="size" type="spinbutton" arg="-size %"
+ <number id="size" type="spinbutton" arg="--size %"
_label="Line thickness" low="-20" high="20" default="-7"/>
</hgroup>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="bsod" _label="BSOD">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=YIqbMCfR3r0"/>
<hgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Duration" _low-label="5 seconds" _high-label="2 minutes"
low="5" high="120" default="45"/>
-<!-- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/> -->
</hgroup>
<hgroup>
<vgroup>
- <boolean id="windows" _label="Windows 3.1" arg-unset="-no-windows"/>
- <boolean id="nt" _label="Windows NT" arg-unset="-no-nt"/>
- <boolean id="2k" _label="Windows 2000 " arg-unset="-no-2k"/>
- <boolean id="win10" _label="Windows 10 " arg-unset="-no-win10"/>
+ <boolean id="windows" _label="Windows 3.1" arg-unset="--no-windows"/>
+ <boolean id="nt" _label="Windows NT" arg-unset="--no-nt"/>
+ <boolean id="2k" _label="Windows 2000 " arg-unset="--no-2k"/>
+ <boolean id="win10" _label="Windows 10 " arg-unset="--no-win10"/>
+ <boolean id="vmwareArm" _label="VMware ESXi-Arm" arg-unset="--no-vmwareArm"/>
</vgroup>
<vgroup>
- <boolean id="msdos" _label="MS-DOS" arg-unset="-no-msdos"/>
- <boolean id="glados" _label="GLaDOS" arg-unset="-no-glados"/>
- <boolean id="amiga" _label="AmigaDOS" arg-unset="-no-amiga"/>
- <boolean id="android" _label="Android" arg-set="-android"/>
+ <boolean id="msdos" _label="MS-DOS" arg-unset="--no-msdos"/>
+ <boolean id="glados" _label="GLaDOS" arg-unset="--no-glados"/>
+ <boolean id="amiga" _label="AmigaDOS" arg-unset="--no-amiga"/>
+ <boolean id="android" _label="Android" arg-set="--android"/>
</vgroup>
<vgroup>
- <boolean id="apple2" _label="Apple ][" arg-unset="-no-apple2"/>
- <boolean id="ransomware" _label="Ransomware" arg-unset="-no-ransomware"/>
- <boolean id="nvidia" _label="NVidia" arg-unset="-no-nvidia"/>
- <boolean id="os2" _label="OS/2" arg-unset="-no-os2"/>
+ <boolean id="apple2" _label="Apple ][" arg-unset="--no-apple2"/>
+ <boolean id="ransomware" _label="Ransomware" arg-unset="--no-ransomware"/>
+ <boolean id="nvidia" _label="NVidia" arg-unset="--no-nvidia"/>
+ <boolean id="os2" _label="OS/2" arg-unset="--no-os2"/>
</vgroup>
<vgroup>
- <boolean id="mac" _label="Sad Mac" arg-unset="-no-mac"/>
- <boolean id="mac1" _label="Mac bomb" arg-unset="-no-mac1"/>
- <boolean id="macsbug" _label="MacsBug" arg-unset="-no-macsbug"/>
- <boolean id="macx" _label="MacOS X" arg-unset="-no-macx"/>
+ <boolean id="mac" _label="Sad Mac" arg-unset="--no-mac"/>
+ <boolean id="mac1" _label="Mac bomb" arg-unset="--no-mac1"/>
+ <boolean id="macsbug" _label="MacsBug" arg-unset="--no-macsbug"/>
+ <boolean id="macx" _label="MacOS X" arg-unset="--no-macx"/>
</vgroup>
<vgroup>
- <boolean id="vmware" _label="VMware" arg-unset="-no-vmware"/>
- <boolean id="atari" _label="Atari" arg-set="-atari"/>
- <boolean id="os390" _label="OS/390" arg-unset="-no-os390"/>
- <boolean id="hvx" _label="HVX/GCOS" arg-unset="-no-hvx"/>
+ <boolean id="vmware" _label="VMware" arg-unset="--no-vmware"/>
+ <boolean id="atari" _label="Atari" arg-set="--atari"/>
+ <boolean id="os390" _label="OS/390" arg-unset="--no-os390"/>
+ <boolean id="hvx" _label="HVX/GCOS" arg-unset="--no-hvx"/>
</vgroup>
<vgroup>
- <boolean id="encom" _label="Encom" arg-unset="-no-encom"/>
- <boolean id="blitdamage" _label="NCD XTerm" arg-unset="-no-blitdamage"/>
- <boolean id="atm" _label="ATM" arg-unset="-no-atm"/>
- <boolean id="dvd" _label="DVD" arg-unset="-no-dvd"/>
+ <boolean id="encom" _label="Encom" arg-unset="--no-encom"/>
+ <boolean id="blitdamage" _label="NCD XTerm" arg-unset="--no-blitdamage"/>
+ <boolean id="atm" _label="ATM" arg-unset="--no-atm"/>
+ <boolean id="dvd" _label="DVD" arg-unset="--no-dvd"/>
</vgroup>
<vgroup>
- <boolean id="nintendo" _label="Nintendo" arg-unset="-no-nintendo"/>
- <boolean id="tivo" _label="Tivo" arg-unset="-no-tivo"/>
- <boolean id="vms" _label="VMS" arg-unset="-no-vms"/>
- <boolean id="bsd" _label="BSD" arg-set="-bsd"/>
+ <boolean id="nintendo" _label="Nintendo" arg-unset="--no-nintendo"/>
+ <boolean id="tivo" _label="Tivo" arg-unset="--no-tivo"/>
+ <boolean id="vms" _label="VMS" arg-unset="--no-vms"/>
+ <boolean id="bsd" _label="BSD" arg-set="--bsd"/>
</vgroup>
<vgroup>
- <boolean id="linux" _label="Linux (fsck)" arg-unset="-no-linux"/>
- <boolean id="sparclinux" _label="Linux (sparc)" arg-set="-sparclinux"/>
- <boolean id="hppalinux" _label="Linux (hppa)" arg-unset="-no-hppalinux"/>
- <boolean id="solaris" _label="Solaris" arg-unset="-no-solaris"/>
+ <boolean id="linux" _label="Linux (fsck)" arg-unset="--no-linux"/>
+ <boolean id="sparclinux" _label="Linux (sparc)" arg-set="--sparclinux"/>
+ <boolean id="hppalinux" _label="Linux (hppa)" arg-unset="--no-hppalinux"/>
+ <boolean id="solaris" _label="Solaris" arg-unset="--no-solaris"/>
</vgroup>
<vgroup>
- <boolean id="sco" _label="SCO" arg-unset="-no-sco"/>
- <boolean id="hpux" _label="HPUX" arg-unset="-no-hpux"/>
- <boolean id="tru64" _label="Tru64" arg-unset="-no-tru64"/>
- <boolean id="gnome" _label="GNOME" arg-unset="-no-gnome"/>
+ <boolean id="sco" _label="SCO" arg-unset="--no-sco"/>
+ <boolean id="hpux" _label="HPUX" arg-unset="--no-hpux"/>
+ <boolean id="tru64" _label="Tru64" arg-unset="--no-tru64"/>
+ <boolean id="gnome" _label="GNOME" arg-unset="--no-gnome"/>
</vgroup>
</hgroup>
<xscreensaver-updater />
</hgroup>
-<!--
- <hgroup>
- <vgroup>
- <number id="tvcolor" type="slider" arg="-tv-color %"
- _label="Color Knob" _low-label="Low" _high-label="High"
- low="0" high="400" default="70"/>
- <number id="tvtint" type="slider" arg="-tv-tint %"
- _label="Tint Knob" _low-label="Low" _high-label="High"
- low="0" high="360" default="5"/>
- </vgroup>
- <vgroup>
- <number id="tvbrightness" type="slider" arg="-tv-brightness %"
- _label="Brightness Knob" _low-label="Low" _high-label="High"
- low="-75.0" high="100.0" default="3.0"/>
- <number id="tvcontrast" type="slider" arg="-tv-contrast %"
- _label="Contrast Knob" _low-label="Low" _high-label="High"
- low="0" high="500" default="150"/>
- </vgroup>
- </hgroup>
--->
-
<_description>
Blue Screen of Death: a large collection of simulated crashes from
various other operating systems.
<screensaver name="bubble3d" _label="Bubble 3D" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=4vcj8sq9FO8"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="10000"
convert="invert"/>
- <boolean id="transp" _label="Transparent bubbles" arg-unset="-no-transparent"/>
+ <boolean id="transp" _label="Transparent bubbles" arg-unset="--no-transparent"/>
<select id="bubblecolor">
<option id="random" _label="Random" />
- <option id="Red" _label="Amber" arg-set="-color #FF0000" />
- <option id="Green" _label="Green" arg-set="-color #00FF00" />
- <option id="Blue" _label="Blue" arg-set="-color #0000FF" />
- <option id="white" _label="White" arg-set="-color #FFFFFF" />
+ <option id="Red" _label="Amber" arg-set="--color #FF0000" />
+ <option id="Green" _label="Green" arg-set="--color #00FF00" />
+ <option id="Blue" _label="Blue" arg-set="--color #0000FF" />
+ <option id="white" _label="White" arg-set="--color #FFFFFF" />
</select>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<_description>
<screensaver name="bubbles" _label="Bubbles">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=Mli1TjZY1YA"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="10000"
convert="invert"/>
<boolean id="simple" _label="Draw circles instead of bubble images"
- arg-set="-simple"/>
+ arg-set="--simple"/>
<boolean id="broken" _label="Don't hide bubbles when they pop"
- arg-set="-broken"/>
+ arg-set="--broken"/>
- <boolean id="trails" _label="Leave trails" arg-set="-trails"/>
+ <boolean id="trails" _label="Leave trails" arg-set="--trails"/>
<select id="gravity">
- <option id="rise" _label="Bubbles rise" arg-set="-mode rise"/>
+ <option id="rise" _label="Bubbles rise" arg-set="--mode rise"/>
<option id="float" _label="Bubbles float"/>
- <option id="drop" _label="Bubbles fall" arg-set="-mode drop"/>
+ <option id="drop" _label="Bubbles fall" arg-set="--mode drop"/>
</select>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="bumps" _label="Bumps">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=IV7D-NYRCiU"/>
- <!-- #### -degrees [360] -->
- <!-- #### -color [random] -->
- <!-- #### -colorcount [64] -->
-
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="30000"
convert="invert"/>
- <number id="duration" type="slider" arg="-duration %"
+ <number id="duration" type="slider" arg="--duration %"
_label="Duration" _low-label="10 seconds" _high-label="10 minutes"
low="10" high="600" default="120"/>
- <!-- #### -soften [1] -->
- <!-- #### -invert -->
-
<xscreensaver-image />
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="cage" _label="Cage" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=BxGHUFvI2Zo"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="25000"
convert="invert"/>
- <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="wire" _label="Wireframe" arg-set="--wireframe"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="carousel" _label="Carousel" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=IyqWkGVrFIY"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="10000"
convert="invert"/>
- <number id="speed" type="slider" arg="-speed %"
+ <number id="speed" type="slider" arg="--speed %"
_label="Animation speed" _low-label="Slow" _high-label="Fast"
low="0.1" high="8.0" default="1.0"
convert="ratio"/>
- <number id="duration" type="slider" arg="-duration %"
+ <number id="duration" type="slider" arg="--duration %"
_label="Time until loading a new image"
_low-label="5 seconds" _high-label="1 minute"
low="5" high="60" default="20"/>
</vgroup>
<vgroup>
- <number id="count" type="spinbutton" arg="-count %"
+ <number id="count" type="spinbutton" arg="--count %"
_label="Number of images" low="1" high="20" default="7"/>
<select id="mode">
<option id="tiltxy" _label="Tilt in/out and left/right"/>
- <option id="tiltx" _label="Tilt in/out only" arg-set="-tilt x"/>
- <option id="tilty" _label="Tilt left/right only" arg-set="-tilt y"/>
- <option id="notilt" _label="No tilting" arg-set="-tilt 0"/>
+ <option id="tiltx" _label="Tilt in/out only" arg-set="--tilt x"/>
+ <option id="tilty" _label="Tilt left/right only" arg-set="--tilt y"/>
+ <option id="notilt" _label="No tilting" arg-set="--tilt 0"/>
</select>
- <boolean id="zoom" _label="Zoom in/out" arg-unset="-no-zoom"/>
- <boolean id="titles" _label="Show file names" arg-unset="-no-titles"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="zoom" _label="Zoom in/out" arg-unset="--no-zoom"/>
+ <boolean id="titles" _label="Show file names" arg-unset="--no-titles"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</vgroup>
</hgroup>
<screensaver name="ccurve" _label="C Curve">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=zqIlWzUHOz8"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Change image every" _low-label="0 seconds" _high-label="30 seconds"
low="0" high="30" default="3"/>
- <number id="pause" type="slider" arg="-pause %"
+ <number id="pause" type="slider" arg="--pause %"
_label="Animation speed" _low-label="Slow" _high-label="Fast"
low="0.0" high="5.0" default="0.4" convert="invert"/>
- <number id="limit" type="slider" arg="-limit %"
+ <number id="limit" type="slider" arg="--limit %"
_label="Density" _low-label="Low" _high-label="High"
low="3" high="300000" default="200000"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="celtic" _label="Celtic">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=PnX60AAoTdw"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="10000"
convert="invert"/>
- <number id="delay2" type="slider" arg="-delay2 %"
+ <number id="delay2" type="slider" arg="--delay2 %"
_label="Linger" _low-label="Short" _high-label="Long"
low="0" high="10" default="5"/>
- <boolean id="graph" _label="Draw graph" arg-set="-graph"/>
+ <boolean id="graph" _label="Draw graph" arg-set="--graph"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="chompytower" _label="Chompy Tower" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=pQh_hLUKPao"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="30000"
convert="invert"/>
- <number id="speed" type="slider" arg="-speed %"
+ <number id="speed" type="slider" arg="--speed %"
_label="Scrolling speed" _low-label="Slow" _high-label="Fast"
low="0.01" high="8.0" default="1.0"
convert="ratio"/>
- <number id="resolution" type="slider" arg="-resolution %"
+ <number id="resolution" type="slider" arg="--resolution %"
_label="Resolution" _low-label="Low" _high-label="high"
low="0.1" high="4.0" default="1.0"
convert="ratio"/>
<hgroup>
- <boolean id="spin" _label="Spin" arg-unset="-no-spin"/>
- <boolean id="wander" _label="Wander" arg-set="-wander"/>
- <boolean id="tilt" _label="Tilt" arg-unset="-no-tilt"/>
- <boolean id="smooth" _label="Smooth" arg-set="-no-smooth"/>
- <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="spin" _label="Spin" arg-unset="--no-spin"/>
+ <boolean id="wander" _label="Wander" arg-set="--wander"/>
+ <boolean id="tilt" _label="Tilt" arg-unset="--no-tilt"/>
+ <boolean id="smooth" _label="Smooth" arg-set="--no-smooth"/>
+ <boolean id="wire" _label="Wireframe" arg-set="--wireframe"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</hgroup>
</vgroup>
<screensaver name="circuit" _label="Circuit" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=tfqR1j1OQs8"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="20000"
convert="invert"/>
- <number id="count" type="slider" arg="-parts %"
+ <number id="count" type="slider" arg="--parts %"
_label="Parts" _low-label="One" _high-label="Lots"
low="1" high="30" default="10"/>
- <number id="speed" type="slider" arg="-rotate-speed %"
+ <number id="speed" type="slider" arg="--rotate-speed %"
_label="Rotation speed" _low-label="Slow" _high-label="Fast"
low="0" high="100" default="1"/>
- <boolean id="spin" _label="Spin" arg-unset="-no-spin"/>
+ <boolean id="spin" _label="Spin" arg-unset="--no-spin"/>
<select id="render">
- <option id="flat" _label="Flat coloring" arg-set="-no-light"/>
+ <option id="flat" _label="Flat coloring" arg-set="--no-light"/>
<option id="light" _label="Directional lighting"/>
</select>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="cityflow" _label="City Flow" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=LJMtu-9T3U0"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="20000"
convert="invert"/>
- <number id="count" type="slider" arg="-count %"
+ <number id="count" type="slider" arg="--count %"
_label="Boxes" _low-label="Few" _high-label="Many"
low="50" high="4000" default="800"/>
- <number id="skew" type="slider" arg="-skew %"
+ <number id="skew" type="slider" arg="--skew %"
_label="Skew"
_low-label="Low" _high-label="High"
low="0" high="45" default="12"/>
</vgroup>
<vgroup>
- <number id="wave-speed" type="slider" arg="-wave-speed %"
+ <number id="wave-speed" type="slider" arg="--wave-speed %"
_label="Wave speed" _low-label="Slow" _high-label="Fast"
low="5" high="150" default="25"/>
- <number id="wave-radius" type="slider" arg="-wave-radius %"
+ <number id="wave-radius" type="slider" arg="--wave-radius %"
_label="Wave overlap"
_low-label="Small" _high-label="Large"
low="5" high="512" default="256"/>
- <number id="waves" type="slider" arg="-waves %"
+ <number id="waves" type="slider" arg="--waves %"
_label="Wave complexity"
_low-label="Low" _high-label="High"
low="1" high="20" default="6"/>
</hgroup>
<hgroup>
- <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="wire" _label="Wireframe" arg-set="--wireframe"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
</hgroup>
<screensaver name="cloudlife" _label="Cloud Life">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=TkVDO3nTTsE"/>
- <number id="delay" type="slider" arg="-cycle-delay %"
+ <number id="delay" type="slider" arg="--cycle-delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="25000"
convert="invert"/>
- <number id="maxage" type="slider" arg="-max-age %"
+ <number id="maxage" type="slider" arg="--max-age %"
_label="Max age" _low-label="Young" _high-label="Old"
low="2" high="255" default="64"/>
- <number id="density" type="slider" arg="-initial-density %"
+ <number id="density" type="slider" arg="--initial-density %"
_label="Initial density" _low-label="Low" _high-label="High"
low="1" high="99" default="30"/>
- <number id="cellsize" type="slider" arg="-cell-size %"
+ <number id="cellsize" type="slider" arg="--cell-size %"
_label="Cell size" _low-label="Small" _high-label="Large"
low="1" high="20" default="3"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="co____9" _label="Co____9" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=xJDxZXbO8mY"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="30000"
convert="invert"/>
- <number id="speed" type="slider" arg="-speed %"
+ <number id="speed" type="slider" arg="--speed %"
_label="Speed" _low-label="Slow" _high-label="Fast"
low="0.1" high="4.0" default="1.0"
convert="ratio"/>
- <number id="count" type="slider" arg="-count %"
+ <number id="count" type="slider" arg="--count %"
_label="How many pretty pretty balls"
_low-label="Not so many" _high-label="A bunch"
low="1" high="400" default="60"/>
<hgroup>
- <boolean id="wander" _label="Wander" arg-unset="-no-wander"/>
- <boolean id="spin" _label="Spin" arg-unset="-no-spin"/>
- <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
+ <boolean id="wander" _label="Wander" arg-unset="--no-wander"/>
+ <boolean id="spin" _label="Spin" arg-unset="--no-spin"/>
+ <boolean id="wire" _label="Wireframe" arg-set="--wireframe"/>
</hgroup>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="companioncube" _label="Companion Cube" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=Q54NVuxhGso"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="30000"
convert="invert"/>
- <number id="speed" type="slider" arg="-speed %"
+ <number id="speed" type="slider" arg="--speed %"
_label="Bounce" _low-label="Slow" _high-label="Fast"
low="0.05" high="2.0" default="1.0"
convert="ratio"/>
</vgroup>
<vgroup>
- <number id="count" type="slider" arg="-count %"
+ <number id="count" type="slider" arg="--count %"
_label="Number of cubes" _low-label="1" _high-label="20"
low="1" high="20" default="3"/>
<hgroup>
<vgroup>
- <boolean id="spin" _label="Spin" arg-set="-spin"/>
- <boolean id="wander" _label="Wander" arg-set="-wander"/>
+ <boolean id="spin" _label="Spin" arg-set="--spin"/>
+ <boolean id="wander" _label="Wander" arg-set="--wander"/>
</vgroup>
<vgroup>
- <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="wire" _label="Wireframe" arg-set="--wireframe"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</vgroup>
</hgroup>
<screensaver name="compass" _label="Compass">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=IssDEcgB550"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="20000"
convert="invert"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="coral" _label="Coral">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=3WTSvzJcQhw"/>
- <number id="delay2" type="slider" arg="-delay2 %"
+ <number id="delay2" type="slider" arg="--delay2 %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="1" high="500000" default="20000"
convert="invert"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Linger" _low-label="1 second" _high-label="1 minute"
low="1" high="60" default="5"/>
- <number id="density" type="slider" arg="-density %"
+ <number id="density" type="slider" arg="--density %"
_label="Density" _low-label="Sparse" _high-label="Dense"
low="1" high="90" default="25"
convert="invert"/>
- <number id="seeds" type="slider" arg="-seeds %"
+ <number id="seeds" type="slider" arg="--seeds %"
_label="Seeds" _low-label="Few" _high-label="Many"
low="1" high="100" default="20"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="covid19" _label="COVID19" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=xJDxZXbO8mY"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="30000"
convert="invert"/>
- <number id="speed" type="slider" arg="-speed %"
+ <number id="speed" type="slider" arg="--speed %"
_label="Speed" _low-label="Slow" _high-label="Fast"
low="0.1" high="4.0" default="1.0"
convert="ratio"/>
- <number id="count" type="slider" arg="-count %"
+ <number id="count" type="slider" arg="--count %"
_label="Government Response"
_low-label="Taiwan" _high-label="United States"
low="1" high="400" default="60"/>
<hgroup>
- <boolean id="wander" _label="Wander" arg-unset="-no-wander"/>
- <boolean id="spin" _label="Spin" arg-unset="-no-spin"/>
- <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
+ <boolean id="wander" _label="Wander" arg-unset="--no-wander"/>
+ <boolean id="spin" _label="Spin" arg-unset="--no-spin"/>
+ <boolean id="wire" _label="Wireframe" arg-set="--wireframe"/>
</hgroup>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="crackberg" _label="Crackberg" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=ej1No4EK8Rc"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="20000"
convert="invert"/>
- <number id="visibility" type="slider" arg="-visibility %"
+ <number id="visibility" type="slider" arg="--visibility %"
_label="Visibility" _low-label="Mouse hole" _high-label="Eagle nest"
low="0.2" high="1.0" default="0.6" />
- <number id="nsubdivs" type="slider" arg="-nsubdivs %"
+ <number id="nsubdivs" type="slider" arg="--nsubdivs %"
_label="Subdivisions" _low-label="Few" _high-label="Hurt me"
low="2" high="9" default="4" />
<hgroup>
<vgroup>
- <boolean id="flat" _label="Flat shading" arg-unset="-no-flat"/>
- <boolean id="lit" _label="Lighting" arg-unset="-no-lit"/>
- <boolean id="water" _label="Water" arg-unset="-no-water"/>
- <boolean id="crack" _label="Confused" arg-unset="-no-crack"/>
+ <boolean id="flat" _label="Flat shading" arg-unset="--no-flat"/>
+ <boolean id="lit" _label="Lighting" arg-unset="--no-lit"/>
+ <boolean id="water" _label="Water" arg-unset="--no-water"/>
+ <boolean id="crack" _label="Confused" arg-unset="--no-crack"/>
</vgroup>
<vgroup>
- <boolean id="boring" _label="Immediate" arg-set="-boring"/>
- <boolean id="letter" _label="Letterbox" arg-set="-letterbox"/>
- <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="boring" _label="Immediate" arg-set="--boring"/>
+ <boolean id="letter" _label="Letterbox" arg-set="--letterbox"/>
+ <boolean id="wire" _label="Wireframe" arg-set="--wireframe"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</vgroup>
</hgroup>
<select id="color">
<option id="random" _label="Random coloration"/>
- <option id="plain" _label="Earthy coloration" arg-set="-color plain"/>
- <option id="ice" _label="Icy coloration" arg-set="-color ice"/>
- <option id="magma" _label="Swampy coloration" arg-set="-color magma"/>
- <option id="vomit" _label="Vomitous coloration" arg-set="-color vomit"/>
+ <option id="plain" _label="Earthy coloration" arg-set="--color plain"/>
+ <option id="ice" _label="Icy coloration" arg-set="--color ice"/>
+ <option id="magma" _label="Swampy coloration" arg-set="--color magma"/>
+ <option id="vomit" _label="Vomitous coloration" arg-set="--color vomit"/>
</select>
<xscreensaver-updater />
<screensaver name="critical" _label="Critical">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=HN2ykbM2cTk"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="10000"
convert="invert"/>
- <number id="ncolors" type="slider" arg="-ncolors %"
+ <number id="ncolors" type="slider" arg="--ncolors %"
_label="Number of colors" _low-label="Two" _high-label="Many"
low="3" high="255" default="64"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="crumbler" _label="Crumbler" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=oERz1IPluYQ"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="30000"
convert="invert"/>
- <number id="speed" type="slider" arg="-speed %"
+ <number id="speed" type="slider" arg="--speed %"
_label="Speed" _low-label="Slow" _high-label="Fast"
low="0.05" high="2.0" default="1.0"
convert="ratio"/>
- <number id="density" type="slider" arg="-density %"
+ <number id="density" type="slider" arg="--density %"
_label="Polygons" _low-label="Few" _high-label="Many"
low="0.2" high="5.0" default="1.0"
convert="ratio"/>
- <number id="fracture" type="slider" arg="-fracture %"
+ <number id="fracture" type="slider" arg="--fracture %"
_label="Fractures" _low-label="Few" _high-label="Many"
low="0" high="20" default="0"/>
</vgroup>
<vgroup>
- <boolean id="wander" _label="Wander" arg-unset="-no-wander"/>
- <boolean id="spin" _label="Spin" arg-unset="-no-spin"/>
- <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="wander" _label="Wander" arg-unset="--no-wander"/>
+ <boolean id="spin" _label="Spin" arg-unset="--no-spin"/>
+ <boolean id="wire" _label="Wireframe" arg-set="--wireframe"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
</vgroup>
<screensaver name="crystal" _label="Crystal">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=M27wWKGXIvw"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="60000"
convert="invert"/>
- <number id="ncolors" type="slider" arg="-ncolors %"
+ <number id="ncolors" type="slider" arg="--ncolors %"
_label="Number of colors" _low-label="Two" _high-label="Many"
low="1" high="255" default="100"/>
- <!-- #### -maxsize -->
- <!-- #### -shift (color cycling) -->
-
- <number id="count" type="spinbutton" arg="-count %"
+ <number id="count" type="spinbutton" arg="--count %"
_label="Number of crystals" low="-5000" high="5000" default="-500"/>
- <number id="nx" type="spinbutton" arg="-nx %"
+ <number id="nx" type="spinbutton" arg="--nx %"
_label="Horizontal symmetries" low="-10" high="10" default="-3"/>
- <number id="ny" type="spinbutton" arg="-ny %"
+ <number id="ny" type="spinbutton" arg="--ny %"
_label="Vertical symmetries" low="-10" high="10" default="-3"/>
<hgroup>
- <boolean id="grid" _label="Draw grid" arg-set="-grid"/>
- <boolean id="cells" _label="Draw cell" arg-unset="-no-cell"/>
- <boolean id="centre" _label="Center on screen" arg-set="-centre"/>
+ <boolean id="grid" _label="Draw grid" arg-set="--grid"/>
+ <boolean id="cells" _label="Draw cell" arg-unset="--no-cell"/>
+ <boolean id="centre" _label="Center on screen" arg-set="--centre"/>
</hgroup>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="cube21" _label="Cube 21" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=AFtxL6--lTQ"/>
<hgroup>
<vgroup>
- <number id="speed" type="slider" arg="-delay %"
+ <number id="speed" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="20000" convert="invert"/>
- <number id="cubesize" type="slider" arg="-cubesize %"
+ <number id="cubesize" type="slider" arg="--cubesize %"
_label="Cube size" _low-label="Small" _high-label="Large"
low="0.4" high="1.0" default="0.7"/>
- <number id="rotspeed" type="slider" arg="-rotspeed %"
+ <number id="rotspeed" type="slider" arg="--rotspeed %"
_label="Rotation" _low-label="Slow" _high-label="Fast"
low="1.0" high="10.0" default="3.0"/>
<select id="start">
- <option id="cube" _label="Start as cube" arg-set="-no-randomize"/>
+ <option id="cube" _label="Start as cube" arg-set="--no-randomize"/>
<option id="shuffle" _label="Start as random shape"/>
</select>
<select id="colors">
- <option id="white" _label="White" arg-set="-colormode white"/>
- <option id="one" _label="Random color" arg-set="-colormode rnd"/>
- <option id="se" _label="Silver edition" arg-set="-colormode se"/>
- <option id="two" _label="Two random colors" arg-set="-colormode two"/>
- <option id="ce" _label="Classic edition" arg-set="-colormode ce"/>
+ <option id="white" _label="White" arg-set="--colormode white"/>
+ <option id="one" _label="Random color" arg-set="--colormode rnd"/>
+ <option id="se" _label="Silver edition" arg-set="--colormode se"/>
+ <option id="two" _label="Two random colors" arg-set="--colormode two"/>
+ <option id="ce" _label="Classic edition" arg-set="--colormode ce"/>
<option id="six" _label="Six random colors"/>
</select>
</vgroup>
<vgroup>
- <number id="spinspeed" type="slider" arg="-spinspeed %"
+ <number id="spinspeed" type="slider" arg="--spinspeed %"
_label="Spin" _low-label="Slow" _high-label="Fast"
low="0.01" high="4.0" default="1.0"
convert="ratio"/>
- <number id="wanderspeed" type="slider" arg="-wanderspeed %"
+ <number id="wanderspeed" type="slider" arg="--wanderspeed %"
_label="Wander" _low-label="Slow" _high-label="Fast"
low="0.001" high="0.1" default="0.02"/>
- <number id="wait" type="slider" arg="-wait %"
+ <number id="wait" type="slider" arg="--wait %"
_label="Linger" _low-label="Short" _high-label="Long"
low="10.0" high="100.0" default="40.0"/>
<hgroup>
- <boolean id="spin" _label="Spin" arg-unset="-no-spin"/>
- <boolean id="wander" _label="Wander" arg-unset="-no-wander"/>
- <boolean id="tex" _label="Outlines" arg-unset="-no-texture"/>
+ <boolean id="spin" _label="Spin" arg-unset="--no-spin"/>
+ <boolean id="wander" _label="Wander" arg-unset="--no-wander"/>
+ <boolean id="tex" _label="Outlines" arg-unset="--no-texture"/>
</hgroup>
<hgroup>
- <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="wire" _label="Wireframe" arg-set="--wireframe"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</hgroup>
</vgroup>
<screensaver name="cubenetic" _label="Cubenetic" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=aElbM0rZZNg"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="20000"
convert="invert"/>
- <number id="count" type="slider" arg="-count %"
+ <number id="count" type="slider" arg="--count %"
_label="Boxes" _low-label="Few" _high-label="Many"
low="1" high="20" default="5"/>
<hgroup>
- <boolean id="wander" _label="Wander" arg-unset="-no-wander"/>
+ <boolean id="wander" _label="Wander" arg-unset="--no-wander"/>
<select id="rotation">
- <option id="no" _label="Don't rotate" arg-set="-spin 0"/>
- <option id="x" _label="Rotate around X axis" arg-set="-spin X"/>
- <option id="y" _label="Rotate around Y axis" arg-set="-spin Y"/>
- <option id="z" _label="Rotate around Z axis" arg-set="-spin Z"/>
- <option id="xy" _label="Rotate around X and Y axes" arg-set="-spin XY"/>
- <option id="xz" _label="Rotate around X and Z axes" arg-set="-spin XZ"/>
- <option id="yz" _label="Rotate around Y and Z axes" arg-set="-spin YZ"/>
+ <option id="no" _label="Don't rotate" arg-set="--spin 0"/>
+ <option id="x" _label="Rotate around X axis" arg-set="--spin X"/>
+ <option id="y" _label="Rotate around Y axis" arg-set="--spin Y"/>
+ <option id="z" _label="Rotate around Z axis" arg-set="--spin Z"/>
+ <option id="xy" _label="Rotate around X and Y axes" arg-set="--spin XY"/>
+ <option id="xz" _label="Rotate around X and Z axes" arg-set="--spin XZ"/>
+ <option id="yz" _label="Rotate around Y and Z axes" arg-set="--spin YZ"/>
<option id="xyz" _label="Rotate around all three axes"/>
</select>
</hgroup>
</vgroup>
<vgroup>
- <number id="wave-speed" type="slider" arg="-wave-speed %"
+ <number id="wave-speed" type="slider" arg="--wave-speed %"
_label="Surface pattern speed" _low-label="Slow" _high-label="Fast"
low="5" high="150" default="80"/>
- <number id="wave-radius" type="slider" arg="-wave-radius %"
+ <number id="wave-radius" type="slider" arg="--wave-radius %"
_label="Surface pattern overlap"
_low-label="Small" _high-label="Large"
low="5" high="600" default="512"/>
- <number id="waves" type="slider" arg="-waves %"
+ <number id="waves" type="slider" arg="--waves %"
_label="Surface pattern complexity"
_low-label="Low" _high-label="High"
low="1" high="20" default="3"/>
</hgroup>
<hgroup>
- <boolean id="tex" _label="Textured" arg-unset="-no-texture"/>
- <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="tex" _label="Textured" arg-unset="--no-texture"/>
+ <boolean id="wire" _label="Wireframe" arg-set="--wireframe"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</hgroup>
<xscreensaver-updater />
<screensaver name="cubestack" _label="Cube Stack" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=rZi5yav6sRo"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="30000"
convert="invert"/>
- <number id="speed" type="slider" arg="-speed %"
+ <number id="speed" type="slider" arg="--speed %"
_label="Animation speed" _low-label="Slow" _high-label="Fast"
low="0.1" high="10" default="1.0"
convert="ratio"/>
</vgroup>
<vgroup>
- <number id="thickness" type="slider" arg="-thickness %"
+ <number id="thickness" type="slider" arg="--thickness %"
_label="Thickness" _low-label="Thin" _high-label="Thick"
low="0.0" high="0.5" default="0.13"/>
- <number id="opacity" type="slider" arg="-opacity %"
+ <number id="opacity" type="slider" arg="--opacity %"
_label="Opacity" _low-label="Transparent" _high-label="Opaque"
low="0.01" high="1.0" default="0.7"/>
</vgroup>
</hgroup>
<hgroup>
- <boolean id="wander" _label="Wander" arg-unset="-no-wander"/>
- <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="wander" _label="Wander" arg-unset="--no-wander"/>
+ <boolean id="wire" _label="Wireframe" arg-set="--wireframe"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</hgroup>
<xscreensaver-updater />
<screensaver name="cubestorm" _label="Cube Storm" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=enuZbkMiqCE"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="30000"
convert="invert"/>
- <number id="speed" type="slider" arg="-speed %"
+ <number id="speed" type="slider" arg="--speed %"
_label="Speed" _low-label="Slow" _high-label="Fast"
low="0.01" high="5.0" default="1.0"
convert="ratio"/>
- <number id="count" type="slider" arg="-count %"
+ <number id="count" type="slider" arg="--count %"
_label="Cubes" _low-label="Few" _high-label="Many"
low="1" high="20" default="4"/>
</vgroup>
<vgroup>
- <number id="length" type="slider" arg="-length %"
+ <number id="length" type="slider" arg="--length %"
_label="Length" _low-label="Short" _high-label="Long"
low="20" high="1000" default="200"/>
- <number id="thickness" type="slider" arg="-thickness %"
+ <number id="thickness" type="slider" arg="--thickness %"
_label="Struts" _low-label="Thin" _high-label="Thick"
low="0.01" high="1.0" default="0.06"/>
<hgroup>
- <boolean id="wander" _label="Wander" arg-unset="-no-wander"/>
- <boolean id="spin" _label="Spin" arg-unset="-no-spin"/>
- <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
+ <boolean id="wander" _label="Wander" arg-unset="--no-wander"/>
+ <boolean id="spin" _label="Spin" arg-unset="--no-spin"/>
+ <boolean id="wire" _label="Wireframe" arg-set="--wireframe"/>
</hgroup>
</vgroup>
</hgroup>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="cubetwist" _label="Cube Twist" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=RjrtUtMEa_4"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="30000"
convert="invert"/>
- <number id="speed" type="slider" arg="-speed %"
+ <number id="speed" type="slider" arg="--speed %"
_label="Animation speed" _low-label="Slow" _high-label="Fast"
low="0.1" high="10" default="1.0"
convert="ratio"/>
</vgroup>
<vgroup>
- <number id="thickness" type="slider" arg="-thickness %"
+ <number id="thickness" type="slider" arg="--thickness %"
_label="Thickness" _low-label="Thin" _high-label="Thick"
low="0.0" high="0.5" default="0.0"/>
- <number id="displacement" type="slider" arg="-displacement %"
+ <number id="displacement" type="slider" arg="--displacement %"
_label="Displacement" _low-label="Tight" _high-label="Wide"
low="0.0" high="0.5" default="0.0"/>
</vgroup>
</hgroup>
<hgroup>
- <boolean id="flat" _label="Flat shading" arg-unset="-no-flat"/>
- <boolean id="wander" _label="Wander" arg-unset="-no-wander"/>
- <boolean id="spin" _label="Spin" arg-unset="-no-spin"/>
- <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="flat" _label="Flat shading" arg-unset="--no-flat"/>
+ <boolean id="wander" _label="Wander" arg-unset="--no-wander"/>
+ <boolean id="spin" _label="Spin" arg-unset="--no-spin"/>
+ <boolean id="wire" _label="Wireframe" arg-set="--wireframe"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</hgroup>
<xscreensaver-updater />
<screensaver name="cubicgrid" _label="Cubic Grid" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=nOTi7gy9l-I"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="20000" convert="invert"/>
- <number id="speed" type="slider" arg="-speed %"
+ <number id="speed" type="slider" arg="--speed %"
_label="Speed" _low-label="Slow" _high-label="Fast"
low="0.2" high="10.0" default="1.0"
convert="ratio"/>
- <number id="zoom" type="slider" arg="-zoom %"
+ <number id="zoom" type="slider" arg="--zoom %"
_label="Dot spacing" _low-label="Close" _high-label="Far"
low="15" high="100" default="20"/>
- <boolean id="bigdots" _label="Big dots" arg-unset="-no-bigdots"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="bigdots" _label="Big dots" arg-unset="--no-bigdots"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<select id="symmetry">
<option id="random" _label="Random symmetry"/>
- <option id="cubic" _label="Cubic symmetry" arg-set="-symmetry cubic"/>
- <option id="hexagonal" _label="Hexagonal symmetry" arg-set="-symmetry hexagonal"/>
+ <option id="cubic" _label="Cubic symmetry" arg-set="--symmetry cubic"/>
+ <option id="hexagonal" _label="Hexagonal symmetry" arg-set="--symmetry hexagonal"/>
</select>
<xscreensaver-updater />
<screensaver name="cwaves" _label="C Waves">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=yOuJqiDUrpY"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="20000"
convert="invert"/>
- <number id="waves" type="slider" arg="-waves %"
+ <number id="waves" type="slider" arg="--waves %"
_label="Complexity" _low-label="Low" _high-label="High"
low="1" high="100" default="15"/>
- <number id="ncolors" type="slider" arg="-colors %"
+ <number id="ncolors" type="slider" arg="--colors %"
_label="Color transitions" _low-label="Rough" _high-label="Smooth"
low="2" high="1000" default="600"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="cynosure" _label="Cynosure">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=If7FOc8UnYs"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="1000000" default="500000"
convert="invert"/>
- <number id="ncolors" type="slider" arg="-ncolors %"
+ <number id="ncolors" type="slider" arg="--ncolors %"
_label="Number of colors" _low-label="Two" _high-label="Many"
low="2" high="255" default="128"/>
- <number id="iterations" type="slider" arg="-iterations %"
+ <number id="iterations" type="slider" arg="--iterations %"
_label="Duration" _low-label="Short" _high-label="Long"
low="2" high="200" default="100"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="dangerball" _label="Danger Ball" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=QU0aPwWwHbg"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="30000"
convert="invert"/>
- <number id="spikespeed" type="slider" arg="-speed %"
+ <number id="spikespeed" type="slider" arg="--speed %"
_label="Spike growth" _low-label="Slow" _high-label="Fast"
low="0.001" high="0.25" default="0.05"/>
- <number id="count" type="slider" arg="-count %"
+ <number id="count" type="slider" arg="--count %"
_label="Number of spikes" _low-label="Few" _high-label="Ouch"
low="1" high="100" default="30"/>
<hgroup>
- <boolean id="wander" _label="Wander" arg-unset="-no-wander"/>
- <boolean id="spin" _label="Spin" arg-unset="-no-spin"/>
- <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
+ <boolean id="wander" _label="Wander" arg-unset="--no-wander"/>
+ <boolean id="spin" _label="Spin" arg-unset="--no-spin"/>
+ <boolean id="wire" _label="Wireframe" arg-set="--wireframe"/>
</hgroup>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="decayscreen" _label="Decay Screen">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=dFlyRTObuDo"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="10000"
convert="invert"/>
- <number id="duration" type="slider" arg="-duration %"
+ <number id="duration" type="slider" arg="--duration %"
_label="Duration" _low-label="10 seconds" _high-label="10 minutes"
low="10" high="600" default="120"/>
<select id="mode">
<option id="random" _label="Random melt style"/>
- <option id="random" _label="Shuffle melt" arg-set="-mode shuffle"/>
- <option id="random" _label="Melt up" arg-set="-mode up"/>
- <option id="random" _label="Melt down" arg-set="-mode down"/>
- <option id="random" _label="Melt left" arg-set="-mode left"/>
- <option id="random" _label="Melt right" arg-set="-mode right"/>
- <option id="random" _label="Melt up, left" arg-set="-mode upleft"/>
- <option id="random" _label="Melt up, right" arg-set="-mode upright"/>
- <option id="random" _label="Melt down, left" arg-set="-mode downleft"/>
- <option id="random" _label="Melt down, right" arg-set="-mode downright"/>
- <option id="random" _label="Melt towards center" arg-set="-mode in"/>
- <option id="random" _label="Melt away from center" arg-set="-mode out"/>
- <option id="random" _label="Melty melt" arg-set="-mode melt"/>
- <option id="random" _label="Stretchy melt" arg-set="-mode stretch"/>
- <option id="random" _label="Fuzzy melt" arg-set="-mode fuzz"/>
+ <option id="random" _label="Shuffle melt" arg-set="--mode shuffle"/>
+ <option id="random" _label="Melt up" arg-set="--mode up"/>
+ <option id="random" _label="Melt down" arg-set="--mode down"/>
+ <option id="random" _label="Melt left" arg-set="--mode left"/>
+ <option id="random" _label="Melt right" arg-set="--mode right"/>
+ <option id="random" _label="Melt up, left" arg-set="--mode upleft"/>
+ <option id="random" _label="Melt up, right" arg-set="--mode upright"/>
+ <option id="random" _label="Melt down, left" arg-set="--mode downleft"/>
+ <option id="random" _label="Melt down, right" arg-set="--mode downright"/>
+ <option id="random" _label="Melt towards center" arg-set="--mode in"/>
+ <option id="random" _label="Melt away from center" arg-set="--mode out"/>
+ <option id="random" _label="Melty melt" arg-set="--mode melt"/>
+ <option id="random" _label="Stretchy melt" arg-set="--mode stretch"/>
+ <option id="random" _label="Fuzzy melt" arg-set="--mode fuzz"/>
</select>
<xscreensaver-image />
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="deco" _label="Deco">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=kfdDTv07Nhw"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Duration" _low-label="1 second" _high-label="1 minute"
low="1" high="60" default="5"/>
- <number id="ncolors" type="slider" arg="-ncolors %"
+ <number id="ncolors" type="slider" arg="--ncolors %"
_label="Number of colors" _low-label="Two" _high-label="Many"
low="1" high="255" default="64"/>
<hgroup>
<vgroup>
- <number id="minwidth" type="spinbutton" arg="-min-width %"
+ <number id="minwidth" type="spinbutton" arg="--min-width %"
_label="Minimum width" low="1" high="100" default="20"/>
- <number id="minheight" type="spinbutton" arg="-min-height %"
+ <number id="minheight" type="spinbutton" arg="--min-height %"
_label="Minimum height" low="1" high="100" default="20"/>
- <number id="maxdepth" type="spinbutton" arg="-max-depth %"
+ <number id="maxdepth" type="spinbutton" arg="--max-depth %"
_label="Maximum depth" low="1" high="40" default="12"/>
</vgroup>
<vgroup>
- <boolean id="smooth-colors" _label="Smooth colors" arg-set="-smooth-colors"/>
- <boolean id="golden-ratio" _label="Golden ratio" arg-set="-golden-ratio"/>
- <boolean id="mondrian" _label="Mondrian" arg-set="-mondrian"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="smooth-colors" _label="Smooth colors" arg-set="--smooth-colors"/>
+ <boolean id="golden-ratio" _label="Golden ratio" arg-set="--golden-ratio"/>
+ <boolean id="mondrian" _label="Mondrian" arg-set="--mondrian"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</vgroup>
</hgroup>
<screensaver name="deepstars" _label="Deep Stars" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=_FhYeKXGpxs"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="30000"
convert="invert"/>
- <number id="speed" type="slider" arg="-speed %"
+ <number id="speed" type="slider" arg="--speed %"
_label="Speed" _low-label="Slow" _high-label="Fast"
low="0.01" high="8.0" default="1.0"
convert="ratio"/>
- <number id="smear" type="slider" arg="-smear %"
+ <number id="smear" type="slider" arg="--smear %"
_label="Smear" _low-label="Low" _high-label="High"
low="0.1" high="5.0" default="1.0"
convert="ratio"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="deluxe" _label="Deluxe">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=2CsKEVR3ecs"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="50000" default="10000"
convert="invert"/>
- <number id="thickness" type="slider" arg="-thickness %"
+ <number id="thickness" type="slider" arg="--thickness %"
_label="Lines" _low-label="Thin" _high-label="Thick"
low="1" high="150" default="50"/>
- <number id="count" type="slider" arg="-count %"
+ <number id="count" type="slider" arg="--count %"
_label="Shapes" _low-label="1" _high-label="20"
low="1" high="20" default="5"/>
- <number id="ncolors" type="slider" arg="-ncolors %"
+ <number id="ncolors" type="slider" arg="--ncolors %"
_label="Number of colors" _low-label="Two" _high-label="Many"
low="1" high="255" default="20"/>
- <!-- #### -speed [15] -->
+ <boolean id="transparent" _label="Transparency" arg-unset="--no-transparent"/>
- <boolean id="transparent" _label="Transparency" arg-unset="-no-transparent"/>
-
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="demon" _label="Demon">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=OhHI-pIHddA"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="50000"
convert="invert"/>
- <number id="count" type="slider" arg="-count %"
+ <number id="count" type="slider" arg="--count %"
_label="States" _low-label="0" _high-label="20"
low="0" high="20" default="0"/>
- <number id="cycles" type="slider" arg="-cycles %"
+ <number id="cycles" type="slider" arg="--cycles %"
_label="Timeout" _low-label="Small" _high-label="Large"
low="0" high="800000" default="1000"/>
- <number id="ncolors" type="slider" arg="-ncolors %"
+ <number id="ncolors" type="slider" arg="--ncolors %"
_label="Number of colors" _low-label="Two" _high-label="Many"
low="1" high="255" default="64"/>
- <number id="size" type="spinbutton" arg="-size %"
+ <number id="size" type="spinbutton" arg="--size %"
_label="Cell size" low="-40" high="40" default="-30"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="discoball" _label="Discoball" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=8yd4PYJQrMw"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="30000"
convert="invert"/>
- <number id="speed" type="slider" arg="-speed %"
+ <number id="speed" type="slider" arg="--speed %"
_label="Speed" _low-label="Slow" _high-label="Fast"
low="0.1" high="5" default="1.0"
convert="ratio"/>
- <number id="count" type="slider" arg="-count %"
+ <number id="count" type="slider" arg="--count %"
_label="Size" _low-label="Small" _high-label="Large"
low="10" high="100" default="30"/>
<hgroup>
- <boolean id="wander" _label="Wander" arg-unset="-no-wander"/>
- <boolean id="spin" _label="Spin" arg-set="-spin"/>
- <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
+ <boolean id="wander" _label="Wander" arg-unset="--no-wander"/>
+ <boolean id="spin" _label="Spin" arg-set="--spin"/>
+ <boolean id="wire" _label="Wireframe" arg-set="--wireframe"/>
</hgroup>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="discrete" _label="Discrete">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=l-yIY8vRlHA"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="20000"
convert="invert"/>
- <number id="cycles" type="slider" arg="-cycles %"
+ <number id="cycles" type="slider" arg="--cycles %"
_label="Timeout" _low-label="Small" _high-label="Large"
low="100" high="10000" default="2500"/>
- <number id="ncolors" type="slider" arg="-ncolors %"
+ <number id="ncolors" type="slider" arg="--ncolors %"
_label="Number of colors" _low-label="Two" _high-label="Many"
low="1" high="255" default="100"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="distort" _label="Distort">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=ENaG3gwtukM"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="200000" default="20000"
convert="invert"/>
- <number id="duration" type="slider" arg="-duration %"
+ <number id="duration" type="slider" arg="--duration %"
_label="Duration" _low-label="10 seconds" _high-label="10 minutes"
low="10" high="600" default="120"/>
- <!-- #### -speed [0] -->
- <!-- #### -slow -->
-
- <number id="radius" type="slider" arg="-radius %"
+ <number id="radius" type="slider" arg="--radius %"
_label="Lens size" _low-label="Small" _high-label="Large"
low="0" high="1000" default="0"/>
<hgroup>
- <number id="count" type="spinbutton" arg="-number %"
+ <number id="count" type="spinbutton" arg="--number %"
_label="Lens count" low="0" high="10" default="0"/>
<select id="effect">
<option id="normal" _label="Normal"/>
- <option id="swamp" _label="Swamp thing" arg-set="-effect swamp"/>
- <option id="bounce" _label="Bounce" arg-set="-effect bounce"/>
+ <option id="swamp" _label="Swamp thing" arg-set="--effect swamp"/>
+ <option id="bounce" _label="Bounce" arg-set="--effect bounce"/>
</select>
</hgroup>
<hgroup>
- <boolean id="reflect" _label="Reflect" arg-set="-reflect"/>
- <boolean id="magnify" _label="Magnify" arg-set="-magnify"/>
- <boolean id="blackhole" _label="Black hole" arg-set="-blackhole"/>
- <boolean id="vortex" _label="Vortex" arg-set="-vortex"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="reflect" _label="Reflect" arg-set="--reflect"/>
+ <boolean id="magnify" _label="Magnify" arg-set="--magnify"/>
+ <boolean id="blackhole" _label="Black hole" arg-set="--blackhole"/>
+ <boolean id="vortex" _label="Vortex" arg-set="--vortex"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</hgroup>
<xscreensaver-image />
<screensaver name="dnalogo" _label="DNA Logo" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=B7I5A7E3SP0"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame Rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="25000"
convert="invert"/>
<select id="mode">
- <option id="glyph" _label="DNA Lounge logo" arg-set="-mode helix"/>
- <option id="pizza" _label="DNA Pizza logo" arg-set="-mode pizza"/>
+ <option id="glyph" _label="DNA Lounge logo" arg-set="--mode helix"/>
+ <option id="pizza" _label="DNA Pizza logo" arg-set="--mode pizza"/>
<option id="both" _label="DNA Lounge and DNA Pizza logos"/>
-<!--<option id="codeword" _label="Codeword logo" arg-set="-mode codeword"/>-->
</select>
<hgroup>
- <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="wire" _label="Wireframe" arg-set="--wireframe"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</hgroup>
<xscreensaver-updater />
<screensaver name="drift" _label="Drift">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=cppZgCh6U7I"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="10000"
convert="invert"/>
- <number id="count" type="slider" arg="-count %"
+ <number id="count" type="slider" arg="--count %"
_label="Duration" _low-label="Short" _high-label="Long"
low="1" high="200" default="30"/>
- <number id="ncolors" type="slider" arg="-ncolors %"
+ <number id="ncolors" type="slider" arg="--ncolors %"
_label="Number of colors" _low-label="Two" _high-label="Many"
low="1" high="255" default="200"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="dymaxionmap" _label="Dymaxion Map" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=4LnO0UiccGs"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="20000"
convert="invert"/>
- <number id="speed" type="slider" arg="-speed %"
+ <number id="speed" type="slider" arg="--speed %"
_label="Animation speed" _low-label="Slow" _high-label="Fast"
low="0.05" high="10.0" default="1.0"
convert="ratio"/>
<hgroup>
<select id="map">
<option id="flat" _label="Flat map"/>
- <option id="day" _label="Satellite map" arg-set="-image BUILTIN_SAT"/>
+ <option id="day" _label="Satellite map" arg-set="--image BUILTIN_SAT"/>
</select>
-
- <!-- <file id="image" _label="Image file" arg="-image %"/> -->
</hgroup>
- <number id="frames" type="slider" arg="-frames %"
+ <number id="frames" type="slider" arg="--frames %"
_label="Day / night smoothness" _low-label="Low" _high-label="High"
low="24" high="1440" default="720"/>
</vgroup>
<vgroup>
<hgroup>
- <boolean id="stars" _label="Stars" arg-unset="-no-stars"/>
- <boolean id="grid" _label="Lat / Long" arg-unset="-no-grid"/>
- <boolean id="wander" _label="Wander" arg-unset="-no-wander"/>
- <boolean id="roll" _label="Roll" arg-unset="-no-roll"/>
- <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="stars" _label="Stars" arg-unset="--no-stars"/>
+ <boolean id="grid" _label="Lat / Long" arg-unset="--no-grid"/>
+ <boolean id="wander" _label="Wander" arg-unset="--no-wander"/>
+ <boolean id="roll" _label="Roll" arg-unset="--no-roll"/>
+ <boolean id="wire" _label="Wireframe" arg-set="--wireframe"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</hgroup>
<xscreensaver-updater />
<screensaver name="endgame" _label="Endgame" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=QfglC_lvUTA"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="20000"
convert="invert"/>
- <boolean id="classic" _label="Low resolution chess pieces" arg-set="-classic"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="classic" _label="Low resolution chess pieces" arg-set="--classic"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="energystream" _label="Energy Stream" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=TbWZ6v5Zzk8"/>
- <number id="speed" type="slider" arg="-speed %"
+ <number id="speed" type="slider" arg="--speed %"
_label="Speed" _low-label="Slow" _high-label="Fast"
low="0.01" high="5.0" default="1.0"
convert="ratio"/>
<hgroup>
- <boolean id="wander" _label="Wander" arg-set="-wander" />
- <boolean id="spin" _label="Spin" arg-set="-spin" />
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="wander" _label="Wander" arg-set="--wander" />
+ <boolean id="spin" _label="Spin" arg-set="--spin" />
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</hgroup>
<xscreensaver-updater />
<screensaver name="engine" _label="Engine" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=8BL2o8QJmiA"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="30000"
convert="invert"/>
<select id="engine">
<option id="random" _label="Random engine"/>
- <option id="1" _label="Honda Insight (3 cylinders)" arg-set="-engine honda_insight"/>
- <option id="2" _label="BMW M3 (4 cylinders)" arg-set="-engine bmw_m3"/>
- <option id="3" _label="VW Beetle (4 cylinders, flat)" arg-set="-engine vw_beetle"/>
- <option id="4" _label="Audi Quattro (5 cylinders)" arg-set="-engine audi_quattro"/>
- <option id="5" _label="BMW M5 (6 cylinders)" arg-set="-engine bmw_m5"/>
- <option id="6" _label="Subaru XT (6 cylinders, V)" arg-set="-engine subaru_xt"/>
- <option id="7" _label="Porsche 911 (6 cylinders, flat)" arg-set="-engine porsche_911"/>
- <option id="8" _label="Corvette Z06 (8 cylinders, V)" arg-set="-engine corvette_z06"/>
- <option id="9" _label="Dodge Viper (10 cylinders, V)" arg-set="-engine dodge_viper"/>
- <option id="10" _label="Jaguar XKE (12 cylinders, V)" arg-set="-engine jaguar_xke"/>
+ <option id="1" _label="Honda Insight (3 cylinders)" arg-set="--engine honda_insight"/>
+ <option id="2" _label="BMW M3 (4 cylinders)" arg-set="--engine bmw_m3"/>
+ <option id="3" _label="VW Beetle (4 cylinders, flat)" arg-set="--engine vw_beetle"/>
+ <option id="4" _label="Audi Quattro (5 cylinders)" arg-set="--engine audi_quattro"/>
+ <option id="5" _label="BMW M5 (6 cylinders)" arg-set="--engine bmw_m5"/>
+ <option id="6" _label="Subaru XT (6 cylinders, V)" arg-set="--engine subaru_xt"/>
+ <option id="7" _label="Porsche 911 (6 cylinders, flat)" arg-set="--engine porsche_911"/>
+ <option id="8" _label="Corvette Z06 (8 cylinders, V)" arg-set="--engine corvette_z06"/>
+ <option id="9" _label="Dodge Viper (10 cylinders, V)" arg-set="--engine dodge_viper"/>
+ <option id="10" _label="Jaguar XKE (12 cylinders, V)" arg-set="--engine jaguar_xke"/>
</select>
- <boolean id="titles" _label="Show engine name" arg-set="-titles"/>
+ <boolean id="titles" _label="Show engine name" arg-set="--titles"/>
<hgroup>
- <boolean id="wander" _label="Wander" arg-unset="-no-move"/>
- <boolean id="spin" _label="Spin" arg-unset="-no-spin"/>
+ <boolean id="wander" _label="Wander" arg-unset="--no-move"/>
+ <boolean id="spin" _label="Spin" arg-unset="--no-spin"/>
</hgroup>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="epicycle" _label="Epicycle">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=rpk3zxQxaR8"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="20000"
convert="invert"/>
- <number id="ncolors" type="slider" arg="-colors %"
+ <number id="ncolors" type="slider" arg="--colors %"
_label="Number of colors" _low-label="Two" _high-label="Many"
low="1" high="255" default="100"/>
- <number id="holdtime" type="slider" arg="-holdtime %"
+ <number id="holdtime" type="slider" arg="--holdtime %"
_label="Linger" _low-label="1 second" _high-label="30 seconds"
low="1" high="30" default="2"/>
<hgroup>
- <number id="linewidth" type="spinbutton" arg="-linewidth %"
+ <number id="linewidth" type="spinbutton" arg="--linewidth %"
_label="Line thickness" low="1" high="50" default="4"/>
- <number id="harmonics" type="spinbutton" arg="-harmonics %"
+ <number id="harmonics" type="spinbutton" arg="--harmonics %"
_label="Harmonics" low="1" high="20" default="8"/>
</hgroup>
- <!-- #### -color0 [red] -->
- <!-- #### -colours [100] -->
- <!-- #### -foreground [white] -->
- <!-- #### -min_circles [2] -->
- <!-- #### -max_circles [10] -->
- <!-- #### -min_speed [0.003] -->
- <!-- #### -max_speed [0.005] -->
- <!-- #### -timestep [1.0] -->
- <!-- #### -divisor_poisson [0.4] -->
- <!-- #### -size_factor_min [1.05] -->
- <!-- #### -size_factor_max [2.05] -->
-
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="eruption" _label="Eruption">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=CQ6jDBnumT8"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="10000"
convert="invert"/>
- <number id="ncolors" type="slider" arg="-ncolors %"
+ <number id="ncolors" type="slider" arg="--ncolors %"
_label="Number of colors" _low-label="Few" _high-label="Many"
low="16" high="256" default="256"/>
- <number id="nparticles" type="slider" arg="-particles %"
+ <number id="nparticles" type="slider" arg="--particles %"
_label="Number of particles" _low-label="Little" _high-label="Many"
low="100" high="2000" default="300"/>
- <number id="cooloff" type="slider" arg="-cooloff %"
+ <number id="cooloff" type="slider" arg="--cooloff %"
_label="Cooling factor" _low-label="Slow" _high-label="Fast"
low="0" high="10" default="2"/>
</vgroup>
<vgroup>
- <number id="heat" type="slider" arg="-heat %"
+ <number id="heat" type="slider" arg="--heat %"
_label="Heat" _low-label="Pleasant" _high-label="Inferno"
low="64" high="256" default="256"/>
- <number id="gravity" type="slider" arg="-gravity %"
+ <number id="gravity" type="slider" arg="--gravity %"
_label="Gravity" _low-label="Negative" _high-label="Positive"
low="-5" high="5" default="1"/>
- <number id="cycles" type="slider" arg="-cycles %"
+ <number id="cycles" type="slider" arg="--cycles %"
_label="Duration" _low-label="Short" _high-label="Long"
low="10" high="3000" default="80"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</vgroup>
</hgroup>
<screensaver name="esper" _label="Esper" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=_er7xZd7zUU"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="20000"
convert="invert"/>
- <number id="speed" type="slider" arg="-speed %"
+ <number id="speed" type="slider" arg="--speed %"
_label="Speed" _low-label="Slow" _high-label="Fast"
low="0.2" high="20" default="1.0"
convert="ratio"/>
</vgroup>
<vgroup>
- <boolean id="titles" _label="Show file names" arg-unset="-no-titles"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="titles" _label="Show file names" arg-unset="--no-titles"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-image />
<video href="https://www.youtube.com/watch?v=p3MgGyie6-I"/>
- <command arg="-root"/>
+ <command arg="--root"/>
<hgroup>
<select id="view-mode">
<option id="walk" _label="Random motion"/>
- <option id="walk" _label="Walk" arg-set="-view-mode walk"/>
- <option id="turn" _label="Turn" arg-set="-view-mode turn"/>
+ <option id="walk" _label="Walk" arg-set="--view-mode walk"/>
+ <option id="turn" _label="Turn" arg-set="--view-mode turn"/>
</select>
<boolean id="orientation-marks" _label="Show orientation marks"
- arg-set="-orientation-marks"/>
+ arg-set="--orientation-marks"/>
</hgroup>
<hgroup>
<boolean id="deform" _label="Deform the surface"
- arg-unset="-no-deform"/>
+ arg-unset="--no-deform"/>
- <number id="deform-speed" type="slider" arg="-deformation-speed %"
+ <number id="deform-speed" type="slider" arg="--deformation-speed %"
_label="Deformation speed"
_low-label="1.0" _high-label="100.0"
low="1.0" high="100.0" default="10.0"/>
- <number id="init-deform" type="slider" arg="-initial-deformation %"
+ <number id="init-deform" type="slider" arg="--initial-deformation %"
_label="Initial deformation"
_low-label="0.0" _high-label="3999.0"
low="0.0" high="3999.0" default="0.0"/>
<vgroup>
<select id="display-mode">
<option id="random" _label="Random surface"/>
- <option id="wire" _label="Wireframe mesh" arg-set="-mode wireframe"/>
- <option id="surface" _label="Solid surface" arg-set="-mode surface"/>
- <option id="transparent" _label="Transparent surface" arg-set="-mode transparent"/>
+ <option id="wire" _label="Wireframe mesh" arg-set="--mode wireframe"/>
+ <option id="surface" _label="Solid surface" arg-set="--mode surface"/>
+ <option id="transparent" _label="Transparent surface" arg-set="--mode transparent"/>
</select>
<select id="appearance">
<option id="random" _label="Random pattern"/>
- <option id="solid" _label="Solid object" arg-set="-appearance solid"/>
- <option id="bands" _label="Distance bands" arg-set="-appearance distance-bands"/>
- <option id="bands" _label="Direction bands" arg-set="-appearance direction-bands"/>
+ <option id="solid" _label="Solid object" arg-set="--appearance solid"/>
+ <option id="bands" _label="Distance bands" arg-set="--appearance distance-bands"/>
+ <option id="bands" _label="Direction bands" arg-set="--appearance direction-bands"/>
</select>
<select id="colors">
<option id="random" _label="Random coloration"/>
- <option id="twosided" _label="One-sided" arg-set="-colors one-sided"/>
- <option id="twosided" _label="Two-sided" arg-set="-colors two-sided"/>
- <option id="rainbow" _label="Distance colors" arg-set="-colors distance"/>
- <option id="rainbow" _label="Direction colors" arg-set="-colors direction"/>
+ <option id="twosided" _label="One-sided" arg-set="--colors one-sided"/>
+ <option id="twosided" _label="Two-sided" arg-set="--colors two-sided"/>
+ <option id="rainbow" _label="Distance colors" arg-set="--colors distance"/>
+ <option id="rainbow" _label="Direction colors" arg-set="--colors direction"/>
</select>
<boolean id="change-colors" _label="Change colors"
- arg-unset="-no-change-colors"/>
+ arg-unset="--no-change-colors"/>
<select id="projection">
<option id="random" _label="Random Projection"/>
- <option id="perspective" _label="Perspective" arg-set="-projection perspective"/>
- <option id="orthographic" _label="Orthographic" arg-set="-projection orthographic"/>
+ <option id="perspective" _label="Perspective" arg-set="--projection perspective"/>
+ <option id="orthographic" _label="Orthographic" arg-set="--projection orthographic"/>
</select>
</vgroup>
<vgroup>
- <number id="speed-x" type="slider" arg="-speed-x %"
+ <number id="speed-x" type="slider" arg="--speed-x %"
_label="X rotation speed"
_low-label="-4.0" _high-label="4.0"
low="-4.0" high="4.0" default="1.1"/>
- <number id="speed-y" type="slider" arg="-speed-y %"
+ <number id="speed-y" type="slider" arg="--speed-y %"
_label="Y rotation speed"
_low-label="-4.0" _high-label="4.0"
low="-4.0" high="4.0" default="1.3"/>
- <number id="speed-z" type="slider" arg="-speed-z %"
+ <number id="speed-z" type="slider" arg="--speed-z %"
_label="Z rotation speed"
_low-label="-4.0" _high-label="4.0"
low="-4.0" high="4.0" default="1.5"/>
</vgroup>
<vgroup>
- <number id="walk-direction" type="slider" arg="-walk-direction %"
+ <number id="walk-direction" type="slider" arg="--walk-direction %"
_label="Walking direction"
_low-label="-180.0" _high-label="180.0"
low="-180.0" high="180.0" default="83.0"/>
- <number id="walk-speed" type="slider" arg="-walk-speed %"
+ <number id="walk-speed" type="slider" arg="--walk-speed %"
_label="Walking speed"
_low-label="1.0" _high-label="100.0"
low="1.0" high="100.0" default="20.0"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="25000"
convert="invert"/>
<vgroup>
<xscreensaver-updater />
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</vgroup>
</hgroup>
<screensaver name="euler2d" _label="Euler 2D">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=ZH1ZtfId0iA"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="10000"
convert="invert"/>
- <number id="count" type="slider" arg="-count %"
+ <number id="count" type="slider" arg="--count %"
_label="Particles" _low-label="Few" _high-label="Many"
low="2" high="5000" default="1024"/>
- <number id="eulertail" type="slider" arg="-eulertail %"
+ <number id="eulertail" type="slider" arg="--eulertail %"
_label="Trail length" _low-label="Short" _high-label="Long"
low="2" high="500" default="10"/>
</vgroup>
<vgroup>
- <!--
- <number id="eulerpower" type="slider" arg="-eulerpower %"
- _label="Power" _low-label="Low" _high-label="High"
- low="0.5" high="3.0" default="1.0"/>
- -->
-
- <number id="cycles" type="slider" arg="-cycles %"
+ <number id="cycles" type="slider" arg="--cycles %"
_label="Duration" _low-label="Short" _high-label="Long"
low="100" high="5000" default="3000"/>
- <number id="ncolors" type="slider" arg="-ncolors %"
+ <number id="ncolors" type="slider" arg="--ncolors %"
_label="Number of colors" _low-label="Two" _high-label="Many"
low="2" high="255" default="64"/>
</vgroup>
</hgroup>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<_description>
<screensaver name="extrusion" _label="Extrusion" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=eKYmqL7ndGs"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="20000"
convert="invert"/>
<select id="mode">
<option id="random" _label="Random object"/>
- <option id="helix2" _label="Helix 2" arg-set="-name helix2"/>
- <option id="helix3" _label="Helix 3" arg-set="-name helix3"/>
- <option id="helix4" _label="Helix 4" arg-set="-name helix4"/>
- <option id="joinoffset" _label="Join offset" arg-set="-name joinoffset"/>
- <option id="screw" _label="Screw" arg-set="-name screw"/>
- <option id="taper" _label="Taper" arg-set="-name taper"/>
- <option id="twist" _label="Twistoid" arg-set="-name twistoid"/>
+ <option id="helix2" _label="Helix 2" arg-set="--name helix2"/>
+ <option id="helix3" _label="Helix 3" arg-set="--name helix3"/>
+ <option id="helix4" _label="Helix 4" arg-set="--name helix4"/>
+ <option id="joinoffset" _label="Join offset" arg-set="--name joinoffset"/>
+ <option id="screw" _label="Screw" arg-set="--name screw"/>
+ <option id="taper" _label="Taper" arg-set="--name taper"/>
+ <option id="twist" _label="Twistoid" arg-set="--name twistoid"/>
</select>
<select id="render">
- <option id="flat" _label="Use flat coloring" arg-set="-no-light"/>
+ <option id="flat" _label="Use flat coloring" arg-set="--no-light"/>
<option id="light" _label="Use lighting"/>
</select>
- <!-- #### -texture -->
- <!-- #### -texture_quality -->
- <!-- #### -mipmap -->
-
- <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="wire" _label="Wireframe" arg-set="--wireframe"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="fadeplot" _label="Fade Plot">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=Cev034v37JM"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="30000"
convert="invert"/>
- <number id="count" type="slider" arg="-count %"
+ <number id="count" type="slider" arg="--count %"
_label="Thickness" _low-label="Thin" _high-label="Thick"
low="0" high="30" default="10"/>
- <number id="cycles" type="slider" arg="-cycles %"
+ <number id="cycles" type="slider" arg="--cycles %"
_label="Cycles" _low-label="Small" _high-label="Large"
low="0" high="10000" default="1500"/>
- <number id="ncolors" type="slider" arg="-ncolors %"
+ <number id="ncolors" type="slider" arg="--ncolors %"
_label="Number of colors" _low-label="Two" _high-label="Many"
low="1" high="255" default="64"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="fiberlamp" _label="Fiber Lamp">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=PvYKJ-vkxE0"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="10000"
convert="invert"/>
- <number id="count" type="slider" arg="-count %"
+ <number id="count" type="slider" arg="--count %"
_label="Fibers" _low-label="Few" _high-label="Many"
low="10" high="500" default="500"/>
- <number id="cycles" type="slider" arg="-cycles %"
+ <number id="cycles" type="slider" arg="--cycles %"
_label="Time between knocks" _low-label="Short" _high-label="Long"
low="100" high="10000" default="10000"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="filmleader" _label="Film Leader">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=Cng7hmsuLo0"/>
<hgroup>
<vgroup>
- <number id="tvcolor" type="slider" arg="-tv-color %"
+ <number id="tvcolor" type="slider" arg="--tv-color %"
_label="Color Knob" _low-label="Low" _high-label="High"
low="0" high="400" default="70"/>
- <number id="tvtint" type="slider" arg="-tv-tint %"
+ <number id="tvtint" type="slider" arg="--tv-tint %"
_label="Tint Knob" _low-label="Low" _high-label="High"
low="0" high="360" default="5"/>
- <number id="noise" type="slider" arg="-noise %"
+ <number id="noise" type="slider" arg="--noise %"
_label="Noise" _low-label="Low" _high-label="High"
low="0.0" high="0.2" default="0.04"/>
</vgroup>
<vgroup>
- <number id="tvbrightness" type="slider" arg="-tv-brightness %"
+ <number id="tvbrightness" type="slider" arg="--tv-brightness %"
_label="Brightness Knob" _low-label="Low" _high-label="High"
low="-75.0" high="100.0" default="3.0"/>
- <number id="tvcontrast" type="slider" arg="-tv-contrast %"
+ <number id="tvcontrast" type="slider" arg="--tv-contrast %"
_label="Contrast Knob" _low-label="Low" _high-label="High"
low="0" high="500" default="150"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</vgroup>
</hgroup>
<screensaver name="fireworkx" _label="Fireworkx">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=-l9BfvnFIPM"/>
- <number id="Delay" type="slider" arg="-delay %"
+ <number id="Delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="10000"
convert="invert"/>
- <number id="maxlife" type="slider" arg="-maxlife %"
+ <number id="maxlife" type="slider" arg="--maxlife %"
_label="Activity" _low-label="Dense" _high-label="Sparse"
low="0" high="100" default="32"/>
- <boolean id="flash" _label="Light flash" arg-unset="-no-flash"/>
- <boolean id="shoot" _label="Shells upward" arg-set="-shoot"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="flash" _label="Light flash" arg-unset="--no-flash"/>
+ <boolean id="shoot" _label="Shells upward" arg-set="--shoot"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="flag" _label="Flag">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=LuEC3EONzjc"/>
- <string id="text" _label="Text for flag" arg="-text %"/>
+ <string id="text" _label="Text for flag" arg="--text %"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="200000" default="50000"
convert="invert"/>
- <number id="cycles" type="slider" arg="-cycles %"
+ <number id="cycles" type="slider" arg="--cycles %"
_label="Timeout" _low-label="Small" _high-label="Large"
low="0" high="800000" default="1000"/>
- <number id="ncolors" type="slider" arg="-ncolors %"
+ <number id="ncolors" type="slider" arg="--ncolors %"
_label="Number of colors" _low-label="Two" _high-label="Many"
low="1" high="255" default="200"/>
- <!-- #### -size [-7] -->
-
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="flame" _label="Flame">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=6Pu8JKNT_Jk"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="50000"
convert="invert"/>
- <number id="delay2" type="slider" arg="-delay2 %"
+ <number id="delay2" type="slider" arg="--delay2 %"
_label="Linger" _low-label="0 seconds" _high-label="10 seconds"
low="1000" high="10000000" default="2000000"/>
- <number id="iterations" type="slider" arg="-iterations %"
+ <number id="iterations" type="slider" arg="--iterations %"
_label="Number of fractals" _low-label="Few" _high-label="Many"
low="1" high="250" default="25"/>
- <number id="points" type="slider" arg="-points %"
+ <number id="points" type="slider" arg="--points %"
_label="Complexity" _low-label="Low" _high-label="High"
low="100" high="80000" default="10000"/>
- <number id="ncolors" type="slider" arg="-colors %"
+ <number id="ncolors" type="slider" arg="--colors %"
_label="Number of colors" _low-label="Two" _high-label="Many"
low="1" high="255" default="64"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="flipflop" _label="Flip Flop" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=RzWRoAMFtnw"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="20000"
convert="invert"/>
- <number id="spin" type="slider" arg="-spin %"
+ <number id="spin" type="slider" arg="--spin %"
_label="Spin" _low-label="Stopped" _high-label="Whirlwind"
low="0" high="3.0" default="0.1"/>
</vgroup>
<select id="mode">
<option id="tiles" _label="Draw Tiles"/>
- <option id="sticks" _label="Draw Sticks" arg-set="-mode sticks"/>
+ <option id="sticks" _label="Draw Sticks" arg-set="--mode sticks"/>
</select>
- <number id="size-x" type="spinbutton" arg="-size-x %"
+ <number id="size-x" type="spinbutton" arg="--size-x %"
_label="Width" low="3" high="20" default="9"/>
- <number id="size-y" type="spinbutton" arg="-size-y %"
+ <number id="size-y" type="spinbutton" arg="--size-y %"
_label="Depth" low="3" high="20" default="9"/>
</vgroup>
</hgroup>
<hgroup>
<vgroup>
- <boolean id="texture" _label="Load image" arg-set="-texture" />
- <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="texture" _label="Load image" arg-set="--texture" />
+ <boolean id="wire" _label="Wireframe" arg-set="--wireframe"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</vgroup>
<vgroup>
<xscreensaver-image />
<screensaver name="flipscreen3d" _label="Flip Screen 3D" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=mu3iN_BSpt4"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="20000"
convert="invert"/>
- <boolean id="rotate" _label="Rotate" arg-unset="-no-rotate"/>
+ <boolean id="rotate" _label="Rotate" arg-unset="--no-rotate"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-image />
<screensaver name="fliptext" _label="Flip Text" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=vcB-6S7Hfuk"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="10000"
convert="invert"/>
</vgroup>
<vgroup>
- <number id="speed" type="slider" arg="-speed %"
+ <number id="speed" type="slider" arg="--speed %"
_label="Speed" _low-label="Slow" _high-label="Fast"
low="0.1" high="10.0" default="1.0"
convert="ratio"/>
<vgroup>
<select id="align">
<option id="left" _label="Random text alignment"/>
- <option id="left" _label="Flush left text" arg-set="-alignment left"/>
- <option id="center" _label="Centered text" arg-set="-alignment center"/>
- <option id="right" _label="Flush right text" arg-set="-alignment right"/>
+ <option id="left" _label="Flush left text" arg-set="--alignment left"/>
+ <option id="center" _label="Centered text" arg-set="--alignment center"/>
+ <option id="right" _label="Flush right text" arg-set="--alignment right"/>
</select>
- <number id="size" type="spinbutton" arg="-size %"
+ <number id="size" type="spinbutton" arg="--size %"
_label="Font point size" low="1" high="100" default="20"/>
- <number id="columns" type="spinbutton" arg="-columns %"
+ <number id="columns" type="spinbutton" arg="--columns %"
_label="Text columns" low="1" high="200" default="80"/>
- <number id="lines" type="spinbutton" arg="-lines %"
+ <number id="lines" type="spinbutton" arg="--lines %"
_label="Text lines" low="1" high="99" default="8"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</vgroup>
<vgroup>
<xscreensaver-text />
<screensaver name="flow" _label="Flow">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=RJjbRV0FC_A"/>
<hgroup>
<vgroup>
- <number id="speed" type="slider" arg="-delay %"
+ <number id="speed" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="10000"
convert="invert"/>
- <number id="count" type="slider" arg="-count %"
+ <number id="count" type="slider" arg="--count %"
_label="Count" _low-label="Few" _high-label="Many"
low="10" high="5000" default="3000"/>
- <number id="cycles" type="slider" arg="-cycles %"
+ <number id="cycles" type="slider" arg="--cycles %"
_label="Timeout" _low-label="Small" _high-label="Large"
low="0" high="800000" default="10000"/>
</vgroup>
<vgroup>
- <number id="ncolors" type="slider" arg="-ncolors %"
+ <number id="ncolors" type="slider" arg="--ncolors %"
_label="Number of colors" _low-label="Two" _high-label="Many"
low="1" high="255" default="200"/>
- <number id="size" type="slider" arg="-size %"
+ <number id="size" type="slider" arg="--size %"
_label="Length of trails" _low-label="Short" _high-label="Long"
low="-20" high="-2" default="-10" convert="invert"/>
</vgroup>
<hgroup>
<vgroup>
- <boolean id="rotate" _label="Rotating around attractor" arg-unset="-no-rotate"/>
- <boolean id="ride" _label="Ride in the flow" arg-unset="-no-ride"/>
- <boolean id="box" _label="Draw bounding box" arg-unset="-no-box"/>
+ <boolean id="rotate" _label="Rotating around attractor" arg-unset="--no-rotate"/>
+ <boolean id="ride" _label="Ride in the flow" arg-unset="--no-ride"/>
+ <boolean id="box" _label="Draw bounding box" arg-unset="--no-box"/>
</vgroup>
<vgroup>
- <boolean id="periodic" _label="Periodic attractors" arg-unset="-no-periodic"/>
- <boolean id="search" _label="Search for new attractors" arg-unset="-no-search"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="periodic" _label="Periodic attractors" arg-unset="--no-periodic"/>
+ <boolean id="search" _label="Search for new attractors" arg-unset="--no-search"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</vgroup>
</hgroup>
<screensaver name="fluidballs" _label="Fluid Balls">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=5Iz9V-vOrxA"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="10000"
convert="invert"/>
- <number id="count" type="slider" arg="-count %"
+ <number id="count" type="slider" arg="--count %"
_label="Number of balls" _low-label="Few" _high-label="Many"
low="1" high="3000" default="300"/>
- <number id="size" type="slider" arg="-size %"
+ <number id="size" type="slider" arg="--size %"
_label="Ball size" _low-label="Small" _high-label="Large"
low="3" high="200" default="25"/>
</vgroup>
<vgroup>
- <number id="gravity" type="slider" arg="-gravity %"
+ <number id="gravity" type="slider" arg="--gravity %"
_label="Gravity" _low-label=" Freefall" _high-label="Jupiter"
low="0.0" high="0.1" default="0.01"/>
- <number id="wind" type="slider" arg="-wind %"
+ <number id="wind" type="slider" arg="--wind %"
_label="Wind" _low-label="Still" _high-label="Hurricane"
low="0.0" high="0.1" default="0.00"/>
- <number id="elasticity" type="slider" arg="-elasticity %"
+ <number id="elasticity" type="slider" arg="--elasticity %"
_label="Friction" _low-label="Clay" _high-label="Rubber"
low="0.2" high="1.0" default="0.97"/>
</vgroup>
</hgroup>
<hgroup>
- <boolean id="random" _label="Various ball sizes" arg-unset="-no-random"/>
- <boolean id="shake" _label="Shake box" arg-unset="-no-shake"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="random" _label="Various ball sizes" arg-unset="--no-random"/>
+ <boolean id="shake" _label="Shake box" arg-unset="--no-shake"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</hgroup>
<xscreensaver-updater />
<screensaver name="flurry" _label="Flurry" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=0beqUyN5ZsI"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<select id="preset">
- <option id="classic" _label="Classic" arg-set="-preset classic"/>
- <option id="rgb" _label="RGB" arg-set="-preset rgb"/>
- <option id="fire" _label="Fire" arg-set="-preset fire"/>
- <option id="water" _label="Water" arg-set="-preset water"/>
- <option id="binary" _label="Binary" arg-set="-preset binary"/>
- <option id="psych" _label="Psychedelic" arg-set="-preset psychedelic"/>
- <option id="insane" _label="Insane" arg-set="-preset insane"/>
+ <option id="classic" _label="Classic" arg-set="--preset classic"/>
+ <option id="rgb" _label="RGB" arg-set="--preset rgb"/>
+ <option id="fire" _label="Fire" arg-set="--preset fire"/>
+ <option id="water" _label="Water" arg-set="--preset water"/>
+ <option id="binary" _label="Binary" arg-set="--preset binary"/>
+ <option id="psych" _label="Psychedelic" arg-set="--preset psychedelic"/>
+ <option id="insane" _label="Insane" arg-set="--preset insane"/>
<option id="random" _label="Random"/>
</select>
<screensaver name="flyingtoasters" _label="Flying Toasters" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=mLGDvtbFvfg"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="30000"
convert="invert"/>
- <number id="speed" type="slider" arg="-speed %"
+ <number id="speed" type="slider" arg="--speed %"
_label="Air speed" _low-label="Slow" _high-label="Fast"
low="0.01" high="8.0" default="1.0"
convert="ratio"/>
- <number id="ntoasters" type="slider" arg="-ntoasters %"
+ <number id="ntoasters" type="slider" arg="--ntoasters %"
_label="Number of toasters" _low-label="None" _high-label="Swarm"
low="0" high="50" default="20"/>
- <number id="nslices" type="slider" arg="-nslices %"
+ <number id="nslices" type="slider" arg="--nslices %"
_label="Number of slices" _low-label="None" _high-label="Swarm"
low="0" high="50" default="25"/>
<hgroup>
- <boolean id="tex" _label="Chrome" arg-unset="-no-texture"/>
- <boolean id="fog" _label="Fog" arg-unset="-no-fog"/>
- <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="tex" _label="Chrome" arg-unset="--no-texture"/>
+ <boolean id="fog" _label="Fog" arg-unset="--no-fog"/>
+ <boolean id="wire" _label="Wireframe" arg-set="--wireframe"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</hgroup>
<xscreensaver-updater />
<screensaver name="fontglide" _label="Font Glide">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=2KCXD19FHk0"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="10000"
convert="invert"/>
- <number id="speed" type="slider" arg="-speed %"
+ <number id="speed" type="slider" arg="--speed %"
_label="Speed" _low-label="Slow" _high-label="Fast"
low="0.1" high="10.0" default="1.0"
convert="ratio"/>
- <number id="linger" type="slider" arg="-linger %"
+ <number id="linger" type="slider" arg="--linger %"
_label="Page linger" _low-label="Brief" _high-label="Long"
low="0.1" high="10.0" default="1.0"
convert="ratio"/>
<select id="mode">
- <option id="page" _label="Pages of text" arg-set="-mode page"/>
- <option id="scroll" _label="Horizontally scrolling text" arg-set="-mode scroll"/>
+ <option id="page" _label="Pages of text" arg-set="--mode page"/>
+ <option id="scroll" _label="Horizontally scrolling text" arg-set="--mode scroll"/>
<option id="random" _label="Random display style"/>
</select>
<hgroup>
- <number id="bw" type="spinbutton" arg="-bw %"
+ <number id="bw" type="spinbutton" arg="--bw %"
_label="Font border thickness" low="0" high="8" default="2"/>
</hgroup>
</vgroup>
<vgroup>
<xscreensaver-text />
<hgroup>
- <boolean id="trails" _label="Vapor trails" arg-set="-trails"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="trails" _label="Vapor trails" arg-set="--trails"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</hgroup>
</vgroup>
</hgroup>
<screensaver name="forest" _label="Forest">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=EEK2qbAmKWs"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="3000000" default="500000"
convert="invert"/>
- <number id="ncolors" type="slider" arg="-ncolors %"
+ <number id="ncolors" type="slider" arg="--ncolors %"
_label="Number of colors" _low-label="Two" _high-label="Many"
low="1" high="20" default="20"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="fuzzyflakes" _label="Fuzzy Flakes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=NrGe3xcqAns"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="10000"
convert="invert"/>
- <number id="speed" type="slider" arg="-speed %"
+ <number id="speed" type="slider" arg="--speed %"
_label="Speed" _low-label="Slow" _high-label="Fast"
low="1" high="50" default="10"/>
- <number id="layers" type="slider" arg="-layers %"
+ <number id="layers" type="slider" arg="--layers %"
_label="Layers" _low-label="Few" _high-label="Many"
low="1" high="10" default="3"/>
<hgroup>
- <boolean id="rc" _label="Random colors" arg-set="-random-colors"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="rc" _label="Random colors" arg-set="--random-colors"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</hgroup>
<select id="color">
- <option id="lred" _label="Red" arg-set="-color #FF0000"/>
+ <option id="lred" _label="Red" arg-set="--color #FF0000"/>
<option id="pink" _label="Pink"/>
- <option id="lyellow" _label="Yellow" arg-set="-color #FFFF00"/>
- <option id="lgreen" _label="Green" arg-set="-color #00FF00"/>
- <option id="lcyan" _label="Cyan" arg-set="-color #00FFFF"/>
- <option id="lblue" _label="Blue" arg-set="-color #0000FF"/>
- <option id="lmagenta" _label="Magenta" arg-set="-color #FF00FF"/>
+ <option id="lyellow" _label="Yellow" arg-set="--color #FFFF00"/>
+ <option id="lgreen" _label="Green" arg-set="--color #00FF00"/>
+ <option id="lcyan" _label="Cyan" arg-set="--color #00FFFF"/>
+ <option id="lblue" _label="Blue" arg-set="--color #0000FF"/>
+ <option id="lmagenta" _label="Magenta" arg-set="--color #FF00FF"/>
</select>
</vgroup>
<vgroup>
- <number id="arms" type="slider" arg="-arms %"
+ <number id="arms" type="slider" arg="--arms %"
_label="Arms" _low-label="Few" _high-label="Many"
low="1" high="10" default="5"/>
- <number id="thickness" type="slider" arg="-thickness %"
+ <number id="thickness" type="slider" arg="--thickness %"
_label="Thickness" _low-label="Thin" _high-label="Thick"
low="1" high="50" default="10"/>
- <number id="bthickness" type="slider" arg="-bthickness %"
+ <number id="bthickness" type="slider" arg="--bthickness %"
_label="Border thickness" _low-label="Thin" _high-label="Thick"
low="0" high="50" default="3"/>
- <number id="radius" type="slider" arg="-radius %"
+ <number id="radius" type="slider" arg="--radius %"
_label="Radius" _low-label="Small" _high-label="Large"
low="1" high="100" default="20"/>
<screensaver name="galaxy" _label="Galaxy">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=xBprAm9w-Fo"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="20000"
convert="invert"/>
- <number id="count" type="spinbutton" arg="-count %"
+ <number id="count" type="spinbutton" arg="--count %"
_label="Count" low="-20" high="20" default="-5"/>
- <number id="cycles" type="slider" arg="-cycles %"
+ <number id="cycles" type="slider" arg="--cycles %"
_label="Duration" _low-label="Short" _high-label="Long"
low="10" high="1000" default="250"/>
- <number id="ncolors" type="slider" arg="-ncolors %"
+ <number id="ncolors" type="slider" arg="--ncolors %"
_label="Number of colors" _low-label="Two" _high-label="Many"
low="10" high="255" default="64"/>
- <boolean id="spin" _label="Rotate viewpoint" arg-unset="-no-spin"/>
+ <boolean id="spin" _label="Rotate viewpoint" arg-unset="--no-spin"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="gears" _label="Gears" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=OHamiC1tcdg"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="30000"
convert="invert"/>
- <number id="speed" type="slider" arg="-speed %"
+ <number id="speed" type="slider" arg="--speed %"
_label="Speed" _low-label="Slow" _high-label="Fast"
low="0.01" high="5.0" default="1.0"
convert="ratio"/>
- <number id="count" type="slider" arg="-count %"
+ <number id="count" type="slider" arg="--count %"
_label="Gear count" _low-label="0" _high-label="20"
low="0" high="20" default="0"/>
<hgroup>
- <boolean id="wander" _label="Wander" arg-unset="-no-wander"/>
- <boolean id="spin" _label="Spin" arg-unset="-no-spin"/>
- <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="wander" _label="Wander" arg-unset="--no-wander"/>
+ <boolean id="spin" _label="Spin" arg-unset="--no-spin"/>
+ <boolean id="wire" _label="Wireframe" arg-set="--wireframe"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</hgroup>
<xscreensaver-updater />
<screensaver name="geodesic" _label="Geodesic" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=qulzooBLIcU"/>
<vgroup>
<select id="object">
<option id="mesh" _label="Mesh faces"/>
- <option id="solid" _label="Solid faces" arg-set="-mode solid"/>
- <option id="stellated" _label="Stellated faces" arg-set="-mode stellated"/>
- <option id="stellated2" _label="Inverse Stellated" arg-set="-mode stellated2"/>
- <option id="wire" _label="Wireframe" arg-set="-mode wire"/>
- <option id="random" _label="Random face style" arg-set="-mode random"/>
+ <option id="solid" _label="Solid faces" arg-set="--mode solid"/>
+ <option id="stellated" _label="Stellated faces" arg-set="--mode stellated"/>
+ <option id="stellated2" _label="Inverse Stellated" arg-set="--mode stellated2"/>
+ <option id="wire" _label="Wireframe" arg-set="--mode wire"/>
+ <option id="random" _label="Random face style" arg-set="--mode random"/>
</select>
- <boolean id="wander" _label="Wander" arg-unset="-no-wander"/>
- <boolean id="spin" _label="Spin" arg-unset="-no-spin"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="wander" _label="Wander" arg-unset="--no-wander"/>
+ <boolean id="spin" _label="Spin" arg-unset="--no-spin"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</vgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="30000"
convert="invert"/>
- <number id="speed" type="slider" arg="-speed %"
+ <number id="speed" type="slider" arg="--speed %"
_label="Animation speed" _low-label="Slow" _high-label="Fast"
low="0.05" high="10.0" default="1.0"
convert="ratio"/>
- <number id="count" type="slider" arg="-count %"
+ <number id="count" type="slider" arg="--count %"
_label="Depth" _low-label="1" _high-label="8"
low="1" high="8" default="4"/>
</vgroup>
<screensaver name="geodesicgears" _label="Geodesic Gears" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=gd_nTnJQ4Ps"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="30000"
convert="invert"/>
- <number id="timeout" type="slider" arg="-timeout %"
+ <number id="timeout" type="slider" arg="--timeout %"
_label="Duration" _low-label="5 seconds" _high-label="2 minutes"
low="5" high="120" default="20"/>
<hgroup>
- <boolean id="labels" _label="Describe gears" arg-set="-labels"/>
- <boolean id="numbers" _label="Number gears" arg-set="-numbers"/>
- <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
+ <boolean id="labels" _label="Describe gears" arg-set="--labels"/>
+ <boolean id="numbers" _label="Number gears" arg-set="--numbers"/>
+ <boolean id="wire" _label="Wireframe" arg-set="--wireframe"/>
</hgroup>
<hgroup>
- <boolean id="wander" _label="Wander" arg-unset="-no-wander"/>
- <boolean id="spin" _label="Spin" arg-unset="-no-spin"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="wander" _label="Wander" arg-unset="--no-wander"/>
+ <boolean id="spin" _label="Spin" arg-unset="--no-spin"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</hgroup>
<xscreensaver-updater />
<screensaver name="gflux" _label="GFlux" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=vbRFlKH-LpA"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="20000"
convert="invert"/>
- <number id="wave" type="slider" arg="-speed %"
+ <number id="wave" type="slider" arg="--speed %"
_label="Wave speed" _low-label="Slow" _high-label="Fast"
low="0" high="0.50" default="0.05"
convert="invert"/>
</vgroup>
<vgroup>
- <number id="squares" type="slider" arg="-squares %"
+ <number id="squares" type="slider" arg="--squares %"
_label="Mesh density" _low-label="Sparse" _high-label="Dense"
low="2" high="40" default="19"/>
- <number id="waves" type="slider" arg="-waves %"
+ <number id="waves" type="slider" arg="--waves %"
_label="Waves" _low-label="1" _high-label="10"
low="1" high="10" default="3"/>
</vgroup>
</hgroup>
<select id="mode">
- <option id="wire" _label="Wire mesh" arg-set="-mode wire"/>
- <option id="solid" _label="Flat lighting" arg-set="-mode solid"/>
- <option id="light" _label="Directional lighting" arg-set="-mode light"/>
- <option id="checker" _label="Checkerboard" arg-set="-mode checker"/>
+ <option id="wire" _label="Wire mesh" arg-set="--mode wire"/>
+ <option id="solid" _label="Flat lighting" arg-set="--mode solid"/>
+ <option id="light" _label="Directional lighting" arg-set="--mode light"/>
+ <option id="checker" _label="Checkerboard" arg-set="--mode checker"/>
<option id="grab" _label="Picture" />
</select>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
-
- <!-- #### -resolution [4] -->
- <!-- #### -flat [0] -->
- <!-- #### -rotationx [0.01] -->
- <!-- #### -rotationy [0.0] -->
- <!-- #### -rotationz [0.1] -->
- <!-- #### -waveChange [50] -->
- <!-- #### -waveHeight [1.0] -->
- <!-- #### -waveFreq [3.0] -->
- <!-- #### -zoom [1.0] -->
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-image />
-
<xscreensaver-updater />
<_description>
<screensaver name="gibson" _label="Gibson" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=_gOhMR3TrHA"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="20000"
convert="invert"/>
- <number id="speed" type="slider" arg="-speed %"
+ <number id="speed" type="slider" arg="--speed %"
_label="Glyph speed" _low-label="Slow" _high-label="Fast"
low="0.1" high="8.0" default="1.0"
convert="ratio"/>
</vgroup>
<vgroup>
- <number id="grid-width" type="spinbutton" arg="-grid-width %"
+ <number id="grid-width" type="spinbutton" arg="--grid-width %"
_label="Grid width" low="1" high="20" default="6"/>
- <number id="grid-depth" type="spinbutton" arg="-grid-depth %"
+ <number id="grid-depth" type="spinbutton" arg="--grid-depth %"
_label="Grid depth" low="1" high="20" default="6"/>
</vgroup>
<vgroup>
- <number id="grid-height" type="spinbutton" arg="-grid-height %"
+ <number id="grid-height" type="spinbutton" arg="--grid-height %"
_label="Tower depth" low="1" high="20" default="7"/>
- <number id="spacing" type="spinbutton" arg="-spacing %"
+ <number id="spacing" type="spinbutton" arg="--spacing %"
_label="Tower spacing" low="1" high="5" default="2.0"/>
- <number id="columns" type="spinbutton" arg="-columns %"
+ <number id="columns" type="spinbutton" arg="--columns %"
_label="Text columns" low="1" high="20" default="5"/>
</vgroup>
</hgroup>
<hgroup>
- <boolean id="tex" _label="Textured" arg-unset="-no-texture"/>
- <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="tex" _label="Textured" arg-unset="--no-texture"/>
+ <boolean id="wire" _label="Wireframe" arg-set="--wireframe"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
</hgroup>
<screensaver name="glblur" _label="GL Blur" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=wUWwQXRp8lE"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="10000"
convert="invert"/>
- <number id="blursize" type="slider" arg="-blursize %"
+ <number id="blursize" type="slider" arg="--blursize %"
_label="Blur smoothness" _low-label="Sparse" _high-label="Dense"
low="1" high="100" default="15"/>
- <boolean id="wander" _label="Wander" arg-unset="-no-wander"/>
+ <boolean id="wander" _label="Wander" arg-unset="--no-wander"/>
<select id="rotation">
- <option id="no" _label="Don't rotate" arg-set="-spin 0"/>
- <option id="x" _label="Rotate around X axis" arg-set="-spin X"/>
- <option id="y" _label="Rotate around Y axis" arg-set="-spin Y"/>
- <option id="z" _label="Rotate around Z axis" arg-set="-spin Z"/>
- <option id="xy" _label="Rotate around X and Y axes" arg-set="-spin XY"/>
- <option id="xz" _label="Rotate around X and Z axes" arg-set="-spin XZ"/>
- <option id="yz" _label="Rotate around Y and Z axes" arg-set="-spin YZ"/>
+ <option id="no" _label="Don't rotate" arg-set="--spin 0"/>
+ <option id="x" _label="Rotate around X axis" arg-set="--spin X"/>
+ <option id="y" _label="Rotate around Y axis" arg-set="--spin Y"/>
+ <option id="z" _label="Rotate around Z axis" arg-set="--spin Z"/>
+ <option id="xy" _label="Rotate around X and Y axes" arg-set="--spin XY"/>
+ <option id="xz" _label="Rotate around X and Z axes" arg-set="--spin XZ"/>
+ <option id="yz" _label="Rotate around Y and Z axes" arg-set="--spin YZ"/>
<option id="xyz" _label="Rotate around all three axes"/>
</select>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="glcells" _label="GL Cells" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=94ac7nEQyBI"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="20000"
convert="invert"/>
- <number id="pause" type="slider" arg="-pause %"
+ <number id="pause" type="slider" arg="--pause %"
_label="Linger" _low-label="Short" _high-label="Long"
low="0" high="400" default="50"/>
- <number id="maxcells" type="slider" arg="-maxcells %"
+ <number id="maxcells" type="slider" arg="--maxcells %"
_label="Max cells" _low-label="Few" _high-label="Many"
low="50" high="5000" default="800"/>
- <number id="radius" type="slider" arg="-radius %"
+ <number id="radius" type="slider" arg="--radius %"
_label="Cell radius" _low-label="Small" _high-label="Huge"
low="5" high="80" default="40"/>
<select id="quality">
- <option id="q0" _label="Lowest sphere detail" arg-set="-quality 0"/>
- <option id="q1" _label="Medium sphere detail" arg-set="-quality 1"/>
- <option id="q2" _label="Normal sphere detail" arg-set="-quality 2"/>
+ <option id="q0" _label="Lowest sphere detail" arg-set="--quality 0"/>
+ <option id="q1" _label="Medium sphere detail" arg-set="--quality 1"/>
+ <option id="q2" _label="Normal sphere detail" arg-set="--quality 2"/>
<option id="q3" _label="More sphere detail"/>
- <option id="q4" _label="Highest sphere detail" arg-set="-quality 4"/>
+ <option id="q4" _label="Highest sphere detail" arg-set="--quality 4"/>
</select>
</vgroup>
<vgroup>
- <number id="minfood" type="slider" arg="-minfood %"
+ <number id="minfood" type="slider" arg="--minfood %"
_label="Min food" _low-label="Starve" _high-label="Gorge"
low="0" high="100" default="5"/>
- <number id="maxfood" type="slider" arg="-maxfood %"
+ <number id="maxfood" type="slider" arg="--maxfood %"
_label="Max food" _low-label="Starve" _high-label="Gorge"
low="10" high="100" default="20"/>
- <number id="divideage" type="slider" arg="-divideage %"
+ <number id="divideage" type="slider" arg="--divideage %"
_label="Cell division" _low-label="Quick" _high-label="Slow"
low="1" high="100" default="20"/>
- <number id="mindist" type="slider" arg="-mindist %"
+ <number id="mindist" type="slider" arg="--mindist %"
_label="Min distance" _low-label="Small" _high-label="Large"
low="1.0" high="3.0" default="1.4"/>
- <number id="seeds" type="slider" arg="-seeds %"
+ <number id="seeds" type="slider" arg="--seeds %"
_label="Seeds" _low-label="1" _high-label="15"
low="1" high="15" default="1"/>
</vgroup>
</hgroup>
<hgroup>
- <boolean id="keepold" _label="Keep dead cells" arg-set="-keepold"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
- <boolean id="wireframe" _label="Wireframe" arg-set="-wireframe"/>
+ <boolean id="keepold" _label="Keep dead cells" arg-set="--keepold"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
+ <boolean id="wireframe" _label="Wireframe" arg-set="--wireframe"/>
</hgroup>
<xscreensaver-updater />
<screensaver name="gleidescope" _label="Gleidescope" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=q6F-CDX6-tU"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="20000"
convert="invert"/>
- <number id="size" _label="Size of tube" arg="-size %"
+ <number id="size" _label="Size of tube" arg="--size %"
type="slider" _low-label="Small" _high-label="Large"
low="0" high="10" default="0" />
- <number id="duration" type="slider" arg="-duration %"
+ <number id="duration" type="slider" arg="--duration %"
_label="Image duration"
_low-label="10 seconds" _high-label="5 minutes"
low="10" high="300" default="30"/>
<hgroup>
- <boolean id="move" _label="Move" arg-unset="-no-move"/>
- <boolean id="rotate" _label="Rotate" arg-unset="-no-rotate"/>
- <boolean id="zoom" _label="Zoom" arg-set="-zoom"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="move" _label="Move" arg-unset="--no-move"/>
+ <boolean id="rotate" _label="Rotate" arg-unset="--no-rotate"/>
+ <boolean id="zoom" _label="Zoom" arg-set="--zoom"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</hgroup>
<xscreensaver-image />
<screensaver name="glforestfire" _label="GL Forest Fire" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=_0Ff3qHUfsA"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="10000"
convert="invert"/>
- <number id="count" type="slider" arg="-count %"
+ <number id="count" type="slider" arg="--count %"
_label="Count" _low-label="Rain" _high-label="Huge fire"
low="0" high="8000" default="800"/>
- <number id="trees" type="slider" arg="-trees %"
+ <number id="trees" type="slider" arg="--trees %"
_label="Number of trees" _low-label="Desert" _high-label="Forest"
low="0" high="20" default="5"/>
<hgroup>
<vgroup>
- <boolean id="wander" _label="Wander" arg-unset="-no-wander"/>
- <boolean id="tex" _label="Textures" arg-unset="-no-texture"/>
- <boolean id="shadow" _label="Shadows" arg-unset="-no-shadows"/>
+ <boolean id="wander" _label="Wander" arg-unset="--no-wander"/>
+ <boolean id="tex" _label="Textures" arg-unset="--no-texture"/>
+ <boolean id="shadow" _label="Shadows" arg-unset="--no-shadows"/>
</vgroup>
<vgroup>
- <boolean id="fog" _label="Fog" arg-set="-fog"/>
- <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="fog" _label="Fog" arg-set="--fog"/>
+ <boolean id="wire" _label="Wireframe" arg-set="--wireframe"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</vgroup>
</hgroup>
<screensaver name="glhanoi" _label="GL Hanoi" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=1qRCviRmsTY"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="15000" convert="invert"/>
- <number id="count" type="slider" arg="-count %"
+ <number id="count" type="slider" arg="--count %"
_label="Number of disks" _low-label="0" _high-label="31"
default="0" low="0" high="31"/>
- <number id="poles" type="slider" arg="-poles %"
+ <number id="poles" type="slider" arg="--poles %"
_label="Number of poles" _low-label="0" _high-label="31"
default="0" low="0" high="31"/>
</vgroup>
<vgroup>
- <number id="speed" type="slider" arg="-speed %"
+ <number id="speed" type="slider" arg="--speed %"
_label="Speed (of smallest disks)" _low-label="1" _high-label="20"
default="1" low="1" high="20"/>
- <number id="trails" type="slider" arg="-trails %"
+ <number id="trails" type="slider" arg="--trails %"
_label="Length of disk trails" _low-label="0" _high-label="10"
default="2" low="0" high="10"/>
- <boolean id="fog" _label="Enable fog" arg-set="-fog"/>
+ <boolean id="fog" _label="Enable fog" arg-set="--fog"/>
- <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
+ <boolean id="wire" _label="Wireframe" arg-set="--wireframe"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
- <boolean id="lighting" _label="Enable lighting" arg-unset="-no-light"/>
+ <boolean id="lighting" _label="Enable lighting" arg-unset="--no-light"/>
</vgroup>
</hgroup>
<screensaver name="glitchpeg" _label="GlitchPEG">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=Xl5vKJ65_xM"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="30000"
convert="invert"/>
- <number id="duration" type="slider" arg="-duration %"
+ <number id="duration" type="slider" arg="--duration %"
_label="Duration" _low-label="1 second" _high-label="10 minutes"
low="1" high="600" default="120"/>
- <number id="count" type="slider" arg="-count %"
+ <number id="count" type="slider" arg="--count %"
_label="Glitchiness" _low-label="Low" _high-label="High"
low="1" high="1024" default="100"/>
<screensaver name="glknots" _label="GL Knots" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=ILiYNkeEb_k"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="30000"
convert="invert"/>
- <number id="speed" type="slider" arg="-speed %"
+ <number id="speed" type="slider" arg="--speed %"
_label="Speed" _low-label="Slow" _high-label="Fast"
low="0.01" high="5.0" default="1.0"
convert="ratio"/>
<select id="rotation">
- <option id="no" _label="Don't rotate" arg-set="-spin 0"/>
- <option id="x" _label="Rotate around X axis" arg-set="-spin X"/>
- <option id="y" _label="Rotate around Y axis" arg-set="-spin Y"/>
- <option id="z" _label="Rotate around Z axis" arg-set="-spin Z"/>
- <option id="xy" _label="Rotate around X and Y axes" arg-set="-spin XY"/>
- <option id="xz" _label="Rotate around X and Z axes" arg-set="-spin XZ"/>
- <option id="yz" _label="Rotate around Y and Z axes" arg-set="-spin YZ"/>
+ <option id="no" _label="Don't rotate" arg-set="--spin 0"/>
+ <option id="x" _label="Rotate around X axis" arg-set="--spin X"/>
+ <option id="y" _label="Rotate around Y axis" arg-set="--spin Y"/>
+ <option id="z" _label="Rotate around Z axis" arg-set="--spin Z"/>
+ <option id="xy" _label="Rotate around X and Y axes" arg-set="--spin XY"/>
+ <option id="xz" _label="Rotate around X and Z axes" arg-set="--spin XZ"/>
+ <option id="yz" _label="Rotate around Y and Z axes" arg-set="--spin YZ"/>
<option id="xyz" _label="Rotate around all three axes"/>
</select>
</vgroup>
<vgroup>
- <number id="segments" type="slider" arg="-segments %"
+ <number id="segments" type="slider" arg="--segments %"
_label="Resolution" _low-label="Segmented" _high-label="Smooth"
low="100" high="2000" default="800"/>
- <number id="thickness" type="slider" arg="-thickness %"
+ <number id="thickness" type="slider" arg="--thickness %"
_label="Thickness" _low-label="Thin" _high-label="Thick"
low="0.05" high="1.0" default="0.3"/>
<hgroup>
- <boolean id="wander" _label="Wander" arg-unset="-no-wander"/>
- <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
+ <boolean id="wander" _label="Wander" arg-unset="--no-wander"/>
+ <boolean id="wire" _label="Wireframe" arg-set="--wireframe"/>
</hgroup>
<hgroup>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</hgroup>
</vgroup>
<screensaver name="glmatrix" _label="GL Matrix" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=_dktSpsaCPg"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="30000"
convert="invert"/>
- <number id="density" type="slider" arg="-density %"
+ <number id="density" type="slider" arg="--density %"
_label="Glyph density" _low-label="Sparse" _high-label="Dense"
low="0" high="100" default="20"/>
- <number id="speed" type="slider" arg="-speed %"
+ <number id="speed" type="slider" arg="--speed %"
_label="Glyph speed" _low-label="Slow" _high-label="Fast"
low="0.1" high="8.0" default="1.0"
convert="ratio"/>
<select id="mode">
<option id="matrix" _label="Matrix encoding"/>
- <option id="binary" _label="Binary encoding" arg-set="-mode binary"/>
- <option id="hex" _label="Hexadecimal encoding" arg-set="-mode hex"/>
- <option id="dna" _label="Genetic encoding" arg-set="-mode dna"/>
+ <option id="binary" _label="Binary encoding" arg-set="--mode binary"/>
+ <option id="hex" _label="Hexadecimal encoding" arg-set="--mode hex"/>
+ <option id="dna" _label="Genetic encoding" arg-set="--mode dna"/>
</select>
<hgroup>
- <boolean id="fog" _label="Fog" arg-unset="-no-fog"/>
- <boolean id="waves" _label="Waves" arg-unset="-no-waves"/>
- <boolean id="rotate" _label="Panning" arg-unset="-no-rotate"/>
+ <boolean id="fog" _label="Fog" arg-unset="--no-fog"/>
+ <boolean id="waves" _label="Waves" arg-unset="--no-waves"/>
+ <boolean id="rotate" _label="Panning" arg-unset="--no-rotate"/>
</hgroup>
<hgroup>
- <boolean id="tex" _label="Textured" arg-unset="-no-texture"/>
- <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="tex" _label="Textured" arg-unset="--no-texture"/>
+ <boolean id="wire" _label="Wireframe" arg-set="--wireframe"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</hgroup>
<xscreensaver-updater />
<screensaver name="glplanet" _label="GL Planet" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=ohcJ1bVkLZ4"/>
-<!--<video href="https://www.youtube.com/watch?v=OZ6zRLLFLk4"/>-->
+<!-- <video href="https://www.youtube.com/watch?v=OZ6zRLLFLk4"/> -->
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="20000"
convert="invert"/>
- <!-- #### -no-texture -->
-
- <file id="image" _label="Day image" arg="-image %" />
- <file id="image2" _label="Night image" arg="-image2 %" />
+ <file id="image" _label="Day image" arg="--image %" />
+ <file id="image2" _label="Night image" arg="--image2 %" />
<hgroup>
- <boolean id="wander" _label="Wander" arg-unset="-no-wander"/>
- <boolean id="rotate" _label="Rotate" arg-unset="-no-rotate"/>
- <boolean id="roll" _label="Roll" arg-unset="-no-roll"/>
- <boolean id="stars" _label="Stars" arg-unset="-no-stars"/>
+ <boolean id="wander" _label="Wander" arg-unset="--no-wander"/>
+ <boolean id="rotate" _label="Rotate" arg-unset="--no-rotate"/>
+ <boolean id="roll" _label="Roll" arg-unset="--no-roll"/>
+ <boolean id="stars" _label="Stars" arg-unset="--no-stars"/>
<select id="mode">
<option id="random" _label="Random Shape"/>
- <option id="globe" _label="Globe" arg-set="-mode globe"/>
- <option id="mercator" _label="Mercator" arg-set="-mode mercator"/>
+ <option id="globe" _label="Globe" arg-set="--mode globe"/>
+ <option id="mercator" _label="Mercator" arg-set="--mode mercator"/>
<option id="equirectangular" _label="Equirectangular"
- arg-set="-mode equirectangular"/>
+ arg-set="--mode equirectangular"/>
</select>
</hgroup>
<hgroup>
- <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="wire" _label="Wireframe" arg-set="--wireframe"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</hgroup>
<xscreensaver-updater />
<screensaver name="glschool" _label="GL School" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=SuMIatcSPdU"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="20000" convert="invert"/>
- <number id="NFish" type="slider" arg="-nfish %"
+ <number id="NFish" type="slider" arg="--nfish %"
_label="Fish count" _low-label="Few" _high-label="Lots"
low="5" high="500" default="100"/>
- <number id="AvoidFact" type="slider" arg="-avoidfact %" _label="Avoidance" _low-label="None" _high-label="High" low="0" high="10" default="1.5"/>
+ <number id="AvoidFact" type="slider" arg="--avoidfact %" _label="Avoidance" _low-label="None" _high-label="High" low="0" high="10" default="1.5"/>
</vgroup>
<vgroup>
- <number id="MatchFact" type="slider" arg="-matchfact %" _label="Velocity matching" _low-label="None" _high-label="High" low="0" high="3" default="0.15"/>
- <number id="CenterFact" type="slider" arg="-centerfact %" _label="Centering" _low-label="None" _high-label="High" low="0" high="1.0" default="0.1"/>
- <number id="TargetFact" type="slider" arg="-targetfact %" _label="Goal following" _low-label="None" _high-label="High" low="0" high="400" default="80"/>
+ <number id="MatchFact" type="slider" arg="--matchfact %" _label="Velocity matching" _low-label="None" _high-label="High" low="0" high="3" default="0.15"/>
+ <number id="CenterFact" type="slider" arg="--centerfact %" _label="Centering" _low-label="None" _high-label="High" low="0" high="1.0" default="0.1"/>
+ <number id="TargetFact" type="slider" arg="--targetfact %" _label="Goal following" _low-label="None" _high-label="High" low="0" high="400" default="80"/>
</vgroup>
</hgroup>
<hgroup>
- <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
- <boolean id="fog" _label="Fog" arg-set="-fog"/>
- <boolean id="drawgoal" _label="Draw goal" arg-set="-drawgoal"/>
- <boolean id="drawbbox" _label="Draw bounding box" arg-unset="-no-drawbbox"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="wire" _label="Wireframe" arg-set="--wireframe"/>
+ <boolean id="fog" _label="Fog" arg-set="--fog"/>
+ <boolean id="drawgoal" _label="Draw goal" arg-set="--drawgoal"/>
+ <boolean id="drawbbox" _label="Draw bounding box" arg-unset="--no-drawbbox"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</hgroup>
<xscreensaver-updater />
<screensaver name="glslideshow" _label="GL Slideshow" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=Hi0xUWnqBhQ"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="20000"
convert="invert"/>
- <number id="duration" type="slider" arg="-duration %"
+ <number id="duration" type="slider" arg="--duration %"
_label="Time until loading a new image"
_low-label="10 seconds" _high-label="5 minutes"
low="10" high="300" default="30"/>
- <number id="zoom" type="slider" arg="-zoom %"
+ <number id="zoom" type="slider" arg="--zoom %"
_label="Always show at least this much of the image"
_low-label="50%" _high-label="100%"
low="50" high="100" default="75"/>
- <number id="pan" type="slider" arg="-pan %"
+ <number id="pan" type="slider" arg="--pan %"
_label="Pan/zoom duration"
_low-label="1 second" _high-label="30 seconds"
low="1" high="30" default="6"/>
- <number id="fade" type="slider" arg="-fade %"
+ <number id="fade" type="slider" arg="--fade %"
_label="Crossfade duration"
_low-label="None" _high-label="30 seconds"
low="0" high="30" default="2"/>
</vgroup>
<vgroup>
- <boolean id="letterbox" _label="Letterbox" arg-unset="-no-letterbox"/>
- <boolean id="titles" _label="Show file names" arg-set="-titles"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="letterbox" _label="Letterbox" arg-unset="--no-letterbox"/>
+ <boolean id="titles" _label="Show file names" arg-set="--titles"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-image />
<screensaver name="glsnake" _label="GL Snake" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=AIqz-G0n1JU"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="30000"
convert="invert"/>
- <number id="duration" type="slider" arg="-statictime %"
+ <number id="duration" type="slider" arg="--statictime %"
_label="Duration" _low-label="1" _high-label="30 seconds"
low="1000" high="30000" default="5000"/>
- <number id="packing" type="slider" arg="-explode %"
+ <number id="packing" type="slider" arg="--explode %"
_label="Packing" _low-label="Tight" _high-label="Loose"
low="0.0" high="0.5" default="0.03"/>
</vgroup>
<vgroup>
- <number id="angvel" type="slider" arg="-angvel %"
+ <number id="angvel" type="slider" arg="--angvel %"
_label="Angular velocity" _low-label="Slow" _high-label="Fast"
low="0.05" high="5.0" default="1.0"/>
- <number id="yangvel" type="slider" arg="-yangvel %"
+ <number id="yangvel" type="slider" arg="--yangvel %"
_label="Y angular velocity" _low-label="Slow" _high-label="Fast"
low="0.0" high="1.0" default="0.10"/>
- <number id="zangvel" type="slider" arg="-zangvel %"
+ <number id="zangvel" type="slider" arg="--zangvel %"
_label="Z angular velocity" _low-label="Slow" _high-label="Fast"
low="0.0" high="1.0" default="0.14"/>
<hgroup>
- <boolean id="labels" _label="Show titles" arg-set="-titles"/>
- <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="labels" _label="Show titles" arg-set="--titles"/>
+ <boolean id="wire" _label="Wireframe" arg-set="--wireframe"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</hgroup>
<xscreensaver-updater />
<screensaver name="gltext" _label="GL Text" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=jrXa-QtY6MU"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="20000"
convert="invert"/>
<select id="text">
<option id="uname" _label="Display system information" />
<option id="clock" _label="Display date and time"
- arg-set="-text '%A%n%d %b %Y%n%r'"/>
+ arg-set="--text '%A%n%d %b %Y%n%r'"/>
</select>
<hgroup>
<select id="facing">
<option id="front" _label="Always face front"/>
- <option id="nofront" _label="Spin all the way around" arg-set="-no-front"/>
+ <option id="nofront" _label="Spin all the way around" arg-set="--no-front"/>
</select>
- <boolean id="wander" _label="Wander" arg-unset="-no-wander"/>
+ <boolean id="wander" _label="Wander" arg-unset="--no-wander"/>
</hgroup>
<select id="rotation">
- <option id="no" _label="Don't rotate" arg-set="-spin 0"/>
- <option id="x" _label="Rotate around X axis" arg-set="-spin X"/>
- <option id="y" _label="Rotate around Y axis" arg-set="-spin Y"/>
- <option id="z" _label="Rotate around Z axis" arg-set="-spin Z"/>
- <option id="xy" _label="Rotate around X and Y axes" arg-set="-spin XY"/>
- <option id="xz" _label="Rotate around X and Z axes" arg-set="-spin XZ"/>
- <option id="yz" _label="Rotate around Y and Z axes" arg-set="-spin YZ"/>
+ <option id="no" _label="Don't rotate" arg-set="--spin 0"/>
+ <option id="x" _label="Rotate around X axis" arg-set="--spin X"/>
+ <option id="y" _label="Rotate around Y axis" arg-set="--spin Y"/>
+ <option id="z" _label="Rotate around Z axis" arg-set="--spin Z"/>
+ <option id="xy" _label="Rotate around X and Y axes" arg-set="--spin XY"/>
+ <option id="xz" _label="Rotate around X and Z axes" arg-set="--spin XZ"/>
+ <option id="yz" _label="Rotate around Y and Z axes" arg-set="--spin YZ"/>
<option id="xyz" _label="Rotate around all three axes"/>
</select>
- <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="wire" _label="Wireframe" arg-set="--wireframe"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="goop" _label="Goop">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=bLMAF4Q-mGA"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="12000"
convert="invert"/>
- <number id="torque" type="slider" arg="-torque %"
+ <number id="torque" type="slider" arg="--torque %"
_label="Speed" _low-label="Slow" _high-label="Fast"
low="0.0002" high="0.0500" default="0.0075"/>
- <number id="count" type="slider" arg="-planes %"
+ <number id="count" type="slider" arg="--planes %"
_label="Blobs" _low-label="Few" _high-label="Many"
low="1" high="50" default="12"/>
</vgroup>
<vgroup>
- <number id="elasticity" type="slider" arg="-elasticity %"
+ <number id="elasticity" type="slider" arg="--elasticity %"
_label="Elasticity" _low-label="Low" _high-label="High"
low="0.1" high="5.0" default="0.9"/>
- <number id="maxv" type="slider" arg="-max-velocity %"
+ <number id="maxv" type="slider" arg="--max-velocity %"
_label="Speed limit" _low-label="Low" _high-label="High"
low="0.1" high="3.0" default="0.5"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</vgroup>
</hgroup>
<hgroup>
<select id="mode">
<option id="transparent" _label="Transparent blobs"/>
- <option id="opaque" _label="Opaque blobs" arg-set="-mode opaque"/>
- <option id="xor" _label="XOR blobs" arg-set="-mode xor"/>
+ <option id="opaque" _label="Opaque blobs" arg-set="--mode opaque"/>
+ <option id="xor" _label="XOR blobs" arg-set="--mode xor"/>
</select>
<select id="color-mode">
<option id="additive" _label="Additive colors (transmitted light)"/>
<option id="subtractive" _label="Subtractive colors (reflected light)"
- arg-set="-subtractive"/>
+ arg-set="--subtractive"/>
</select>
</hgroup>
<screensaver name="grav" _label="Grav">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=spQRFDmDMeg"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="10000"
convert="invert"/>
- <number id="count" type="slider" arg="-count %"
+ <number id="count" type="slider" arg="--count %"
_label="Number of objects" _low-label="Few" _high-label="Many"
low="1" high="40" default="12"/>
- <number id="ncolors" type="slider" arg="-ncolors %"
+ <number id="ncolors" type="slider" arg="--ncolors %"
_label="Number of colors" _low-label="Two" _high-label="Many"
low="1" high="255" default="64"/>
<hgroup>
- <boolean id="decay" _label="Orbital decay" arg-unset="-no-decay"/>
- <boolean id="trail" _label="Object trails" arg-unset="-no-trail"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="decay" _label="Orbital decay" arg-unset="--no-decay"/>
+ <boolean id="trail" _label="Object trails" arg-unset="--no-trail"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</hgroup>
<xscreensaver-updater />
<screensaver name="gravitywell" _label="Gravity Well" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=yhsw0QhIjjs"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="30000"
convert="invert"/>
- <number id="speed" type="slider" arg="-speed %"
+ <number id="speed" type="slider" arg="--speed %"
_label="Speed" _low-label="Slow" _high-label="Fast"
low="0.01" high="8.0" default="1.0"
convert="ratio"/>
- <number id="resolution" type="slider" arg="-resolution %"
+ <number id="resolution" type="slider" arg="--resolution %"
_label="Resolution" _low-label="Low" _high-label="High"
low="1.0" high="5.0" default="1.0"/>
</vgroup>
<vgroup>
- <number id="grid-size" type="slider" arg="-grid-size %"
+ <number id="grid-size" type="slider" arg="--grid-size %"
_label="Grid Size" _low-label="Dense" _high-label="Sparse"
low="0.1" high="5.0" default="1.0"
convert="ratio"/>
- <number id="count" type="slider" arg="-count %"
+ <number id="count" type="slider" arg="--count %"
_label="Number of stars" _low-label="One" _high-label="Lots"
low="1" high="40" default="15"/>
</vgroup>
<screensaver name="greynetic" _label="Greynetic">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=lVEi089s1_c"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="250000" default="10000"
convert="invert"/>
- <boolean id="grey" _label="Grey" arg-set="-grey"/>
+ <boolean id="grey" _label="Grey" arg-set="--grey"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="halftone" _label="Halftone">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=K2lqgBPde4o"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="10000" convert="invert"/>
- <number id="count" type="slider" arg="-count %"
+ <number id="count" type="slider" arg="--count %"
_label="Gravity points" _low-label="Few" _high-label="Many"
low="1" high="50" default="10"/>
- <number id="size" type="slider" arg="-spacing %"
+ <number id="size" type="slider" arg="--spacing %"
_label="Dot size" _low-label="Small" _high-label="Big"
low="2" high="50" default="14"/>
- <number id="dotfill" type="slider" arg="-sizefactor %"
+ <number id="dotfill" type="slider" arg="--sizefactor %"
_label="Dot fill factor" _low-label="Small" _high-label="Large"
low="0.1" high="3" default="1.5"/>
</vgroup>
<vgroup>
- <number id="minspeed" type="slider" arg="-minspeed %"
+ <number id="minspeed" type="slider" arg="--minspeed %"
_label="Minimum speed" _low-label="Low" _high-label="High"
low="0.001" high="0.09" default="0.001"/>
- <number id="maxspeed" type="slider" arg="-maxspeed %"
+ <number id="maxspeed" type="slider" arg="--maxspeed %"
_label="Maximum speed" _low-label="Low" _high-label="High"
low="0.001" high="0.09" default="0.02"/>
- <number id="minmass" type="slider" arg="-minmass %"
+ <number id="minmass" type="slider" arg="--minmass %"
_label="Minimum mass" _low-label="Small" _high-label="Large"
low="0.001" high="0.09" default="0.001"/>
- <number id="maxmass" type="slider" arg="-maxmass %"
+ <number id="maxmass" type="slider" arg="--maxmass %"
_label="Maximum mass" _low-label="Small" _high-label="Large"
low="0.001" high="0.09" default="0.02"/>
</vgroup>
</hgroup>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="halo" _label="Halo">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=K7LbfXh3LTc"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="200000" default="100000"
convert="invert"/>
- <number id="count" type="slider" arg="-count %"
+ <number id="count" type="slider" arg="--count %"
_label="Number of circles" _low-label="Few" _high-label="Many"
low="0" high="20" default="0"/>
- <number id="ncolors" type="slider" arg="-colors %"
+ <number id="ncolors" type="slider" arg="--colors %"
_label="Number of colors" _low-label="Two" _high-label="Many"
low="1" high="255" default="100"/>
<select id="mode">
<option id="random" _label="Random mode"/>
- <option id="seuss" _label="Seuss mode" arg-set="-mode seuss"/>
- <option id="ramp" _label="Ramp mode" arg-set="-mode ramp"/>
+ <option id="seuss" _label="Seuss mode" arg-set="--mode seuss"/>
+ <option id="ramp" _label="Ramp mode" arg-set="--mode ramp"/>
</select>
<hgroup>
- <boolean id="animate" _label="Animate circles" arg-set="-animate"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="animate" _label="Animate circles" arg-set="--animate"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</hgroup>
<xscreensaver-updater />
<screensaver name="handsy" _label="Handsy" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=awI8EawYTdE"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="30000"
convert="invert"/>
- <number id="speed" type="slider" arg="-speed %"
+ <number id="speed" type="slider" arg="--speed %"
_label="Speed" _low-label="Slow" _high-label="Fast"
low="0.05" high="2.0" default="1.0"
convert="ratio"/>
- <number id="count" type="slider" arg="-count %"
+ <number id="count" type="slider" arg="--count %"
_label="Number of hands" _low-label="Two" _high-label="Many"
low="2" high="32" default="2"/>
</vgroup>
<vgroup>
- <boolean id="wander" _label="Wander" arg-unset="-no-wander"/>
+ <boolean id="wander" _label="Wander" arg-unset="--no-wander"/>
<select id="rotation">
- <option id="no" _label="Don't rotate" arg-set="-spin 0"/>
- <option id="x" _label="Rotate around X axis" arg-set="-spin X"/>
- <option id="y" _label="Rotate around Y axis" arg-set="-spin Y"/>
- <option id="z" _label="Rotate around Z axis" arg-set="-spin Z"/>
+ <option id="no" _label="Don't rotate" arg-set="--spin 0"/>
+ <option id="x" _label="Rotate around X axis" arg-set="--spin X"/>
+ <option id="y" _label="Rotate around Y axis" arg-set="--spin Y"/>
+ <option id="z" _label="Rotate around Z axis" arg-set="--spin Z"/>
<option id="xy" _label="Rotate around X and Y axes"/>
- <option id="xz" _label="Rotate around X and Z axes" arg-set="-spin XZ"/>
- <option id="yz" _label="Rotate around Y and Z axes" arg-set="-spin YZ"/>
- <option id="xyz" _label="Rotate around all three axes" arg-set="-spin XYZ"/>
+ <option id="xz" _label="Rotate around X and Z axes" arg-set="--spin XZ"/>
+ <option id="yz" _label="Rotate around Y and Z axes" arg-set="--spin YZ"/>
+ <option id="xyz" _label="Rotate around all three axes" arg-set="--spin XYZ"/>
</select>
<select id="facing">
<option id="front" _label="Always face front"/>
- <option id="nofront" _label="Spin all the way around" arg-set="-no-front"/>
+ <option id="nofront" _label="Spin all the way around" arg-set="--no-front"/>
</select>
<hgroup>
- <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="wire" _label="Wireframe" arg-set="--wireframe"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</hgroup>
<xscreensaver-updater />
<screensaver name="headroom" _label="Headroom" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=kuS_HK4bIFI"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="20000"
convert="invert"/>
- <number id="speed" type="slider" arg="-speed %"
+ <number id="speed" type="slider" arg="--speed %"
_label="Spike growth" _low-label="Slow" _high-label="Fast"
low="0.1" high="10.0" default="1.0"
convert="ratio"/>
<select id="rotation">
- <option id="no" _label="Don't wobble" arg-set="-spin 0"/>
- <option id="x" _label="Wobble around X axis" arg-set="-spin X"/>
- <option id="y" _label="Wobble around Y axis" arg-set="-spin Y"/>
- <option id="z" _label="Wobble around Z axis" arg-set="-spin Z"/>
- <option id="xy" _label="Wobble around X and Y axes" arg-set="-spin XY"/>
- <option id="xz" _label="Wobble around X and Z axes" arg-set="-spin XZ"/>
- <option id="yz" _label="Wobble around Y and Z axes" arg-set="-spin YZ"/>
+ <option id="no" _label="Don't wobble" arg-set="--spin 0"/>
+ <option id="x" _label="Wobble around X axis" arg-set="--spin X"/>
+ <option id="y" _label="Wobble around Y axis" arg-set="--spin Y"/>
+ <option id="z" _label="Wobble around Z axis" arg-set="--spin Z"/>
+ <option id="xy" _label="Wobble around X and Y axes" arg-set="--spin XY"/>
+ <option id="xz" _label="Wobble around X and Z axes" arg-set="--spin XZ"/>
+ <option id="yz" _label="Wobble around Y and Z axes" arg-set="--spin YZ"/>
<option id="xyz" _label="Wobble around all three axes"/>
</select>
<hgroup>
- <boolean id="wander" _label="Wander" arg-set="-wander"/>
- <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
- <boolean id="mask" _label="Mask Headroom" arg-set="-mask"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="wander" _label="Wander" arg-set="--wander"/>
+ <boolean id="wire" _label="Wireframe" arg-set="--wireframe"/>
+ <boolean id="mask" _label="Mask Headroom" arg-set="--mask"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</hgroup>
<xscreensaver-updater />
<screensaver name="helix" _label="Helix">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=H-mMnadnPSs"/>
- <number id="delay" type="slider" arg="-subdelay %"
+ <number id="delay" type="slider" arg="--subdelay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="20000"
convert="invert"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Linger" _low-label="1 second" _high-label="1 minute"
low="1" high="60" default="5"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="hexadrop" _label="Hexadrop">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=HMPVzQUGW-Q"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="50000" default="30000"
convert="invert"/>
- <number id="speed" type="slider" arg="-speed %"
+ <number id="speed" type="slider" arg="--speed %"
_label="Speed" _low-label="Slow" _high-label="Fast"
low="0.1" high="4.0" default="1.0"
convert="ratio"/>
- <number id="size" type="slider" arg="-size %"
+ <number id="size" type="slider" arg="--size %"
_label="Tile size" _low-label="Small" _high-label="Large"
low="5" high="50" default="15"
convert="invert"/>
<vgroup>
<select id="sides">
<option id="0" _label="Random shape"/>
- <option id="3" _label="Triangles" arg-set="-sides 3"/>
- <option id="4" _label="Squares" arg-set="-sides 4"/>
- <option id="6" _label="Hexagons" arg-set="-sides 6"/>
- <option id="5" _label="Octagons" arg-set="-sides 8"/>
+ <option id="3" _label="Triangles" arg-set="--sides 3"/>
+ <option id="4" _label="Squares" arg-set="--sides 4"/>
+ <option id="6" _label="Hexagons" arg-set="--sides 6"/>
+ <option id="5" _label="Octagons" arg-set="--sides 8"/>
</select>
<select id="uniform">
<option id="r-uniform" _label="Random speed"/>
- <option id="uniform" _label="Uniform speed" arg-set="-uniform-speed"/>
- <option id="no-uniform" _label="Non-uniform speed" arg-set="-nonuniform-speed"/>
+ <option id="uniform" _label="Uniform speed" arg-set="--uniform-speed"/>
+ <option id="no-uniform" _label="Non-uniform speed" arg-set="--nonuniform-speed"/>
</select>
<select id="lockstep">
<option id="r-lockstep" _label="Random sync"/>
- <option id="lockstep" _label="Synchronized" arg-set="-lockstep"/>
- <option id="no-lockstep" _label="Non-synchronized" arg-set="-no-lockstep"/>
+ <option id="lockstep" _label="Synchronized" arg-set="--lockstep"/>
+ <option id="no-lockstep" _label="Non-synchronized" arg-set="--no-lockstep"/>
</select>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</vgroup>
</hgroup>
<screensaver name="hexstrut" _label="Hex Strut" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=iOCffj3ZmgE"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="30000"
convert="invert"/>
- <number id="speed" type="slider" arg="-speed %"
+ <number id="speed" type="slider" arg="--speed %"
_label="Speed" _low-label="Slow" _high-label="Fast"
low="0.1" high="5" default="1.0"
convert="ratio"/>
</vgroup>
<vgroup>
- <number id="count" type="slider" arg="-count %"
+ <number id="count" type="slider" arg="--count %"
_label="Hexagon Size" _low-label="Small" _high-label="Large"
low="2" high="80" default="20"
convert="invert"/>
- <number id="thickness" type="slider" arg="-thickness %"
+ <number id="thickness" type="slider" arg="--thickness %"
_label="Line Thickness" _low-label="Thin" _high-label="Thick"
low="0.01" high="1.7" default="0.2"/>
</vgroup>
</hgroup>
<hgroup>
- <boolean id="wander" _label="Wander" arg-unset="-no-wander"/>
- <boolean id="spin" _label="Spin" arg-unset="-no-spin"/>
- <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="wander" _label="Wander" arg-unset="--no-wander"/>
+ <boolean id="spin" _label="Spin" arg-unset="--no-spin"/>
+ <boolean id="wire" _label="Wireframe" arg-set="--wireframe"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</hgroup>
<xscreensaver-updater />
<screensaver name="hilbert" _label="Hilbert" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=NhKmipo_Ek4"/>
<hgroup>
<select id="twodee">
<option id="random" _label="2D or 3D"/>
- <option id="2D" _label="2D" arg-set="-mode 2d"/>
- <option id="3D" _label="3D" arg-set="-mode 3d"/>
+ <option id="2D" _label="2D" arg-set="--mode 2d"/>
+ <option id="3D" _label="3D" arg-set="--mode 3d"/>
</select>
<select id="closed">
<option id="random" _label="Open or closed paths"/>
- <option id="closed" _label="Closed" arg-set="-ends closed"/>
- <option id="open" _label="Open" arg-set="-ends open"/>
+ <option id="closed" _label="Closed" arg-set="--ends closed"/>
+ <option id="open" _label="Open" arg-set="--ends open"/>
</select>
</hgroup>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Slow" _high-label="Fast"
low="0" high="100000" default="30000"
convert="invert"/>
- <number id="speed" type="slider" arg="-speed %"
+ <number id="speed" type="slider" arg="--speed %"
_label="Speed" _low-label="Slow" _high-label="Fast"
low="0.02" high="10.0" default="1.0"
convert="ratio"/>
</vgroup>
<vgroup>
- <number id="depth" type="slider" arg="-max-depth %"
+ <number id="depth" type="slider" arg="--max-depth %"
_label="Recursion levels" _low-label="2" _high-label="10"
low="2" high="10" default="5"/>
- <number id="thickness" type="slider" arg="-thickness %"
+ <number id="thickness" type="slider" arg="--thickness %"
_label="Line thickness" _low-label="Thin" _high-label="Thick"
low="0.01" high="1.0" default="0.25"/>
</vgroup>
</hgroup>
<hgroup>
- <boolean id="wander" _label="Wander" arg-set="-wander"/>
- <boolean id="spin" _label="Spin" arg-unset="-no-spin"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
- <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
+ <boolean id="wander" _label="Wander" arg-set="--wander"/>
+ <boolean id="spin" _label="Spin" arg-unset="--no-spin"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
+ <boolean id="wire" _label="Wireframe" arg-set="--wireframe"/>
</hgroup>
</vgroup>
<screensaver name="hopalong" _label="Hopalong">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=Ck0pKMflau0"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="10000"
convert="invert"/>
- <number id="cycles" type="slider" arg="-cycles %"
+ <number id="cycles" type="slider" arg="--cycles %"
_label="Duration" _low-label="Small" _high-label="Large"
low="0" high="800000" default="2500"/>
</vgroup>
<vgroup>
- <number id="count" type="slider" arg="-count %"
+ <number id="count" type="slider" arg="--count %"
_label="Color contrast" _low-label="Low" _high-label="High"
low="100" high="10000" default="1000"/>
- <number id="ncolors" type="slider" arg="-ncolors %"
+ <number id="ncolors" type="slider" arg="--ncolors %"
_label="Number of colors" _low-label="Two" _high-label="Many"
low="1" high="255" default="200"/>
</vgroup>
<hgroup>
<vgroup>
- <boolean id="sine" _label="Sine" arg-set="-sine"/>
- <boolean id="martin" _label="Martin" arg-set="-martin"/>
- <boolean id="popcorn" _label="Popcorn" arg-set="-popcorn"/>
+ <boolean id="sine" _label="Sine" arg-set="--sine"/>
+ <boolean id="martin" _label="Martin" arg-set="--martin"/>
+ <boolean id="popcorn" _label="Popcorn" arg-set="--popcorn"/>
</vgroup>
<vgroup>
- <boolean id="jong" _label="Jong" arg-set="-jong"/>
- <boolean id="rr" _label="RR" arg-set="-rr"/>
- <boolean id="ejk1" _label="EJK1" arg-set="-ejk1"/>
+ <boolean id="jong" _label="Jong" arg-set="--jong"/>
+ <boolean id="rr" _label="RR" arg-set="--rr"/>
+ <boolean id="ejk1" _label="EJK1" arg-set="--ejk1"/>
</vgroup>
<vgroup>
- <boolean id="ejk2" _label="EJK2" arg-set="-ejk2"/>
- <boolean id="ejk3" _label="EJK3" arg-set="-ejk3"/>
- <boolean id="ejk4" _label="EJK4" arg-set="-ejk4"/>
+ <boolean id="ejk2" _label="EJK2" arg-set="--ejk2"/>
+ <boolean id="ejk3" _label="EJK3" arg-set="--ejk3"/>
+ <boolean id="ejk4" _label="EJK4" arg-set="--ejk4"/>
</vgroup>
<vgroup>
- <boolean id="ejk5" _label="EJK5" arg-set="-ejk5"/>
- <boolean id="ejk6" _label="EJK6" arg-set="-ejk6"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="ejk5" _label="EJK5" arg-set="--ejk5"/>
+ <boolean id="ejk6" _label="EJK6" arg-set="--ejk6"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</vgroup>
</hgroup>
<screensaver name="hydrostat" _label="Hydrostat" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=nn-nA18hFt0"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="20000"
convert="invert"/>
- <number id="speed" type="slider" arg="-speed %"
+ <number id="speed" type="slider" arg="--speed %"
_label="Animation speed" _low-label="Slow" _high-label="Fast"
low="0.01" high="4.0" default="1.0"
convert="ratio"/>
- <number id="count" type="slider" arg="-count %"
+ <number id="count" type="slider" arg="--count %"
_label="Number of squid" _low-label="One" _high-label="Many"
low="1" high="100" default="3" />
- <number id="head_radius" type="slider" arg="-head-radius %"
+ <number id="head_radius" type="slider" arg="--head-radius %"
_label="Head size" _low-label="Small" _high-label="Large"
low="10" high="100" default="60" />
- <number id="tentacles" type="slider" arg="-tentacles %"
+ <number id="tentacles" type="slider" arg="--tentacles %"
_label="Number of tentacles" _low-label="Few" _high-label="Many"
low="3" high="100" default="35" />
</vgroup>
<vgroup>
- <number id="thickness" type="slider" arg="-thickness %"
+ <number id="thickness" type="slider" arg="--thickness %"
_label="Thickness" _low-label="Thin" _high-label="Thick"
low="3" high="40" default="18" />
- <number id="length" type="slider" arg="-length %"
+ <number id="length" type="slider" arg="--length %"
_label="Length of tentacles" _low-label="Short" _high-label="Long"
low="10" high="150" default="55" />
- <number id="gravity" type="slider" arg="-gravity %"
+ <number id="gravity" type="slider" arg="--gravity %"
_label="Gravity" _low-label="Weak" _high-label="Strong"
low="0" high="10.0" default="0.5" />
- <number id="current" type="slider" arg="-current %"
+ <number id="current" type="slider" arg="--current %"
_label="Current" _low-label="Weak" _high-label="Strong"
low="0.0" high="10.0" default="0.25" />
- <number id="friction" type="slider" arg="-friction %"
+ <number id="friction" type="slider" arg="--friction %"
_label="Viscosity" _low-label="Low" _high-label="High"
low="0.0" high="0.1" default="0.02" />
</vgroup>
</hgroup>
<hgroup>
- <boolean id="pulse" _label="Pulse" arg-unset="-no-pulse" />
- <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="pulse" _label="Pulse" arg-unset="--no-pulse" />
+ <boolean id="wire" _label="Wireframe" arg-set="--wireframe"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
</hgroup>
<screensaver name="hyperball" _label="Hyperball">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=BqOHgn0BQOc"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="20000"
convert="invert"/>
- <number id="z" type="slider" arg="-observer-z %"
+ <number id="z" type="slider" arg="--observer-z %"
_label="Zoom" _low-label="Near" _high-label="Far"
low="1.125" high="10.0" default="3.0"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</vgroup>
<vgroup>
- <number id="xw" type="slider" arg="-xw %"
+ <number id="xw" type="slider" arg="--xw %"
_label="XW rotation" _low-label="Slow" _high-label="Fast"
low="0" high="20" default="0"/>
- <number id="xy" type="slider" arg="-xy %"
+ <number id="xy" type="slider" arg="--xy %"
_label="XY rotation" _low-label="Slow" _high-label="Fast"
low="0" high="20" default="3"/>
- <number id="xz" type="slider" arg="-xz %"
+ <number id="xz" type="slider" arg="--xz %"
_label="XZ rotation" _low-label="Slow" _high-label="Fast"
low="0" high="20" default="5"/>
</vgroup>
<vgroup>
- <number id="yw" type="slider" arg="-yw %"
+ <number id="yw" type="slider" arg="--yw %"
_label="YW rotation" _low-label="Slow" _high-label="Fast"
low="0" high="20" default="10"/>
- <number id="yz" type="slider" arg="-yz %"
+ <number id="yz" type="slider" arg="--yz %"
_label="YZ rotation" _low-label="Slow" _high-label="Fast"
low="0" high="20" default="0"/>
- <number id="zw" type="slider" arg="-zw %"
+ <number id="zw" type="slider" arg="--zw %"
_label="ZW rotation" _low-label="Slow" _high-label="Fast"
low="0" high="20" default="0"/>
</vgroup>
<screensaver name="hypercube" _label="Hypercube">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=tOLzz_D4-0E"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="10000"
convert="invert"/>
- <number id="z" type="slider" arg="-observer-z %"
+ <number id="z" type="slider" arg="--observer-z %"
_label="Zoom" _low-label="Near" _high-label="Far"
low="1.125" high="10.0" default="3.0"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</vgroup>
<vgroup>
- <number id="xw" type="slider" arg="-xw %"
+ <number id="xw" type="slider" arg="--xw %"
_label="XW rotation" _low-label="Slow" _high-label="Fast"
low="0" high="20" default="0"/>
- <number id="xy" type="slider" arg="-xy %"
+ <number id="xy" type="slider" arg="--xy %"
_label="XY rotation" _low-label="Slow" _high-label="Fast"
low="0" high="20" default="3"/>
- <number id="xz" type="slider" arg="-xz %"
+ <number id="xz" type="slider" arg="--xz %"
_label="XZ rotation" _low-label="Slow" _high-label="Fast"
low="0" high="20" default="5"/>
</vgroup>
<vgroup>
- <number id="yw" type="slider" arg="-yw %"
+ <number id="yw" type="slider" arg="--yw %"
_label="YW rotation" _low-label="Slow" _high-label="Fast"
low="0" high="20" default="10"/>
- <number id="yz" type="slider" arg="-yz %"
+ <number id="yz" type="slider" arg="--yz %"
_label="YZ rotation" _low-label="Slow" _high-label="Fast"
low="0" high="20" default="0"/>
- <number id="zw" type="slider" arg="-zw %"
+ <number id="zw" type="slider" arg="--zw %"
_label="ZW rotation" _low-label="Slow" _high-label="Fast"
low="0" high="20" default="0"/>
</vgroup>
</hgroup>
- <!-- #### -color0 [magenta] -->
- <!-- #### -color1 [yellow] -->
- <!-- #### -color2 [#FF9300] -->
- <!-- #### -color3 [#FF0093] -->
- <!-- #### -color4 [green] -->
- <!-- #### -color5 [#8080FF] -->
- <!-- #### -color6 [#00D0FF] -->
- <!-- #### -color7 [#00FFD0] -->
-
<xscreensaver-updater />
<_description>
<screensaver name="hypertorus" _label="Hypertorus" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=KJWe4G4Qa1Q"/>
<hgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="25000"
convert="invert"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</hgroup>
<hgroup>
<select id="display-mode">
<option id="wire" _label="Wireframe"
- arg-set="-mode wireframe"/>
+ arg-set="--mode wireframe"/>
<option id="surface" _label="Solid"/>
<option id="transparent" _label="Transparent"
- arg-set="-mode transparent"/>
+ arg-set="--mode transparent"/>
</select>
<select id="appearance">
<option id="solid" _label="Solid object"
- arg-set="-appearance solid"/>
+ arg-set="--appearance solid"/>
<option id="bands" _label="Transparent bands"/>
<option id="bands" _label="1 transparent spiral"
- arg-set="-appearance spirals-1"/>
+ arg-set="--appearance spirals-1"/>
<option id="bands" _label="2 transparent spirals"
- arg-set="-appearance spirals-2"/>
+ arg-set="--appearance spirals-2"/>
<option id="bands" _label="4 transparent spirals"
- arg-set="-appearance spirals-4"/>
+ arg-set="--appearance spirals-4"/>
<option id="bands" _label="8 transparent spirals"
- arg-set="-appearance spirals-8"/>
+ arg-set="--appearance spirals-8"/>
<option id="bands" _label="16 Transparent spirals"
- arg-set="-appearance spirals-16"/>
+ arg-set="--appearance spirals-16"/>
</select>
<select id="colors">
- <option id="onesided" _label="One-sided" arg-set="-onesided"/>
- <option id="twosided" _label="Two-sided" arg-set="-twosided"/>
+ <option id="onesided" _label="One-sided" arg-set="--onesided"/>
+ <option id="twosided" _label="Two-sided" arg-set="--twosided"/>
<option id="colorwheel" _label="Color wheel"/>
</select>
<boolean id="change-colors" _label="Change colors"
- arg-set="-change-colors"/>
+ arg-set="--change-colors"/>
<select id="projection3d">
<option id="perspective-3d" _label="Perspective 3D"/>
<option id="orthographic-3d" _label="Orthographic 3D"
- arg-set="-orthographic-3d"/>
+ arg-set="--orthographic-3d"/>
</select>
<select id="projection4d">
<option id="perspective-4d" _label="Perspective 4D"/>
<option id="orthographic-4d" _label="Orthographic 4D"
- arg-set="-orthographic-4d"/>
+ arg-set="--orthographic-4d"/>
</select>
</hgroup>
<vgroup>
- <number id="speed-wx" type="slider" arg="-speed-wx %"
+ <number id="speed-wx" type="slider" arg="--speed-wx %"
_label="WX rotation speed"
_low-label="-4.0" _high-label="4.0"
low="-4.0" high="4.0" default="1.1"/>
- <number id="speed-wy" type="slider" arg="-speed-wy %"
+ <number id="speed-wy" type="slider" arg="--speed-wy %"
_label="WY rotation speed"
_low-label="-4.0" _high-label="4.0"
low="-4.0" high="4.0" default="1.3"/>
- <number id="speed-wz" type="slider" arg="-speed-wz %"
+ <number id="speed-wz" type="slider" arg="--speed-wz %"
_label="WZ rotation speed"
_low-label="-4.0" _high-label="4.0"
low="-4.0" high="4.0" default="1.5"/>
<vgroup>
- <number id="speed-xy" type="slider" arg="-speed-xy %"
+ <number id="speed-xy" type="slider" arg="--speed-xy %"
_label="XY rotation speed"
_low-label="-4.0" _high-label="4.0"
low="-4.0" high="4.0" default="1.7"/>
- <number id="speed-xz" type="slider" arg="-speed-xz %"
+ <number id="speed-xz" type="slider" arg="--speed-xz %"
_label="XZ rotation speed"
_low-label="-4.0" _high-label="4.0"
low="-4.0" high="4.0" default="1.9"/>
- <number id="speed-yz" type="slider" arg="-speed-yz %"
+ <number id="speed-yz" type="slider" arg="--speed-yz %"
_label="YZ rotation speed"
_low-label="-4.0" _high-label="4.0"
low="-4.0" high="4.0" default="2.1"/>
<screensaver name="hypnowheel" _label="Hypnowheel" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=QcJnc9EKJrI"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Slow" _high-label="Fast"
low="0" high="100000" default="20000"
convert="invert"/>
- <number id="speed" type="slider" arg="-speed %"
+ <number id="speed" type="slider" arg="--speed %"
_label="Speed" _low-label="Slow" _high-label="Fast"
low="0.1" high="20.0" default="1.0"
convert="ratio"/>
<hgroup>
- <boolean id="wander" _label="Wander" arg-set="-wander"/>
- <boolean id="symmetric" _label="Symmetric twisting" arg-set="-symmetric"/>
+ <boolean id="wander" _label="Wander" arg-set="--wander"/>
+ <boolean id="symmetric" _label="Symmetric twisting" arg-set="--symmetric"/>
</hgroup>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</vgroup>
<vgroup>
- <number id="layers" type="slider" arg="-layers %"
+ <number id="layers" type="slider" arg="--layers %"
_label="Layers" _low-label="1" _high-label="50"
low="1" high="50" default="4"/>
- <number id="count" type="slider" arg="-count %"
+ <number id="count" type="slider" arg="--count %"
_label="Arms" _low-label="2" _high-label="50"
low="2" high="50" default="13"/>
- <number id="twistiness" type="slider" arg="-twistiness %"
+ <number id="twistiness" type="slider" arg="--twistiness %"
_label="Twistiness" _low-label="Low" _high-label="High"
low="0.2" high="10.0" default="4.0"/>
</vgroup>
<screensaver name="ifs" _label="IFS">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=0uOIrVFsECM"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="20000"
convert="invert"/>
- <number id="functions" type="slider" arg="-functions %"
+ <number id="functions" type="slider" arg="--functions %"
_label="Number of functions" _low-label="2" _high-label="6"
low="2" high="6" default="3"/>
- <number id="detail" type="slider" arg="-detail %"
+ <number id="detail" type="slider" arg="--detail %"
_label="Detail" _low-label="Low" _high-label="High"
low="4" high="14" default="9"/>
to drop below 30 fps detail 12 or higher.
-->
- <number id="colors" type="slider" arg="-colors %"
+ <number id="colors" type="slider" arg="--colors %"
_label="Number of colors" _low-label="2" _high-label="Many"
low="2" high="255" default="200" />
<hgroup>
- <boolean id="translate" _label="Translate" arg-unset="-no-translate"/>
- <boolean id="scale" _label="Scale" arg-unset="-no-scale"/>
- <boolean id="rotate" _label="Rotate" arg-unset="-no-rotate"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="translate" _label="Translate" arg-unset="--no-translate"/>
+ <boolean id="scale" _label="Scale" arg-unset="--no-scale"/>
+ <boolean id="rotate" _label="Rotate" arg-unset="--no-rotate"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</hgroup>
<xscreensaver-updater />
<screensaver name="imsmap" _label="IMS Map">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=FP8YJzFkdoQ"/>
- <number id="delay2" type="slider" arg="-delay2 %"
+ <number id="delay2" type="slider" arg="--delay2 %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="20000"
convert="invert"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Linger" _low-label="1 Second" _high-label="1 Minute"
low="1" high="60" default="5"/>
- <number id="iterations" type="slider" arg="-iterations %"
+ <number id="iterations" type="slider" arg="--iterations %"
_label="Density" _low-label="Sparse" _high-label="Dense"
low="1" high="7" default="7"/>
- <number id="ncolors" type="slider" arg="-ncolors %"
+ <number id="ncolors" type="slider" arg="--ncolors %"
_label="Number of colors" _low-label="Two" _high-label="Many"
low="3" high="255" default="50"/>
<select id="mode">
<option id="random" _label="Random coloration"/>
- <option id="h" _label="Hue gradients" arg-set="-mode h"/>
- <option id="s" _label="Saturation gradients" arg-set="-mode s"/>
- <option id="v" _label="Brightness gradients" arg-set="-mode v"/>
+ <option id="h" _label="Hue gradients" arg-set="--mode h"/>
+ <option id="s" _label="Saturation gradients" arg-set="--mode s"/>
+ <option id="v" _label="Brightness gradients" arg-set="--mode v"/>
</select>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="interaggregate" _label="Interaggregate">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=wqPOZiuj4RI"/>
- <number id="speed" type="slider" arg="-growth-delay %"
+ <number id="speed" type="slider" arg="--growth-delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="18000" convert="invert"/>
- <number id="init" type="slider" arg="-num-circles %"
+ <number id="init" type="slider" arg="--num-circles %"
_label="Number of discs" _low-label="Few" _high-label="Many"
low="50" high="400" default="100"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="interference" _label="Interference">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=nEmvx4l1sHI"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="30000"
convert="invert"/>
- <number id="wspeed" type="slider" arg="-speed %"
+ <number id="wspeed" type="slider" arg="--speed %"
_label="Wave speed" _low-label="Slow" _high-label="Fast"
low="1" high="100" default="30"/>
- <number id="radius" type="slider" arg="-radius %"
+ <number id="radius" type="slider" arg="--radius %"
_label="Wave size" _low-label="Small" _high-label="Large"
low="50" high="1500" default="800"/>
- <number id="count" type="slider" arg="-count %"
+ <number id="count" type="slider" arg="--count %"
_label="Number of waves" _low-label="Few" _high-label="Many"
low="0" high="20" default="3"/>
</vgroup>
<vgroup>
- <number id="gridsize" type="slider" arg="-gridsize %"
+ <number id="gridsize" type="slider" arg="--gridsize %"
_label="Magnification" _low-label="Low" _high-label="High"
low="1" high="20" default="2"/>
- <number id="ncolors" type="slider" arg="-ncolors %"
+ <number id="ncolors" type="slider" arg="--ncolors %"
_label="Number of colors" _low-label="Two" _high-label="Many"
low="1" high="255" default="192"/>
- <number id="color_contrast" type="slider" arg="-color-shift %"
+ <number id="color_contrast" type="slider" arg="--color-shift %"
_label="Color contrast" _low-label="Low" _high-label="High"
low="0" high="100" default="60"/>
- <number id="hue" type="slider" arg="-hue %"
+ <number id="hue" type="slider" arg="--hue %"
_label="Hue" _low-label="0" _high-label="360"
low="0" high="360" default="0"/>
</vgroup>
</hgroup>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="intermomentary" _label="Intermomentary">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=pH-ykepPopw"/>
- <number id="speed" type="slider" arg="-draw-delay %"
+ <number id="speed" type="slider" arg="--draw-delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="30000" convert="invert"/>
- <number id="init" type="slider" arg="-num-discs %"
+ <number id="init" type="slider" arg="--num-discs %"
_label="Number of discs" _low-label="50" _high-label="400"
low="50" high="400" default="85"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="jigglypuff" _label="Jiggly Puff" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=60vfs2WcDtE"/>
<hgroup>
- <boolean id="random" _label="Randomize almost everything" arg-unset="-no-random"/>
+ <boolean id="random" _label="Randomize almost everything" arg-unset="--no-random"/>
<select id="color">
<option id="cycle" _label="Cycle" />
- <option id="flowerbox" _label="Flower box" arg-set="-color flowerbox"/>
- <option id="clownbarf" _label="Clown barf" arg-set="-color clownbarf"/>
- <option id="chrome" _label="Chrome" arg-set="-color chrome"/>
+ <option id="flowerbox" _label="Flower box" arg-set="--color flowerbox"/>
+ <option id="clownbarf" _label="Clown barf" arg-set="--color clownbarf"/>
+ <option id="chrome" _label="Chrome" arg-set="--color chrome"/>
</select>
<select id="start">
<option id="sphere" _label="Sphere" />
- <option id="tetrahedron" _label="Tetrahedron" arg-set="-tetra"/>
+ <option id="tetrahedron" _label="Tetrahedron" arg-set="--tetra"/>
</select>
- <boolean id="wireframe" _label="Wireframe" arg-set="-wireframe"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="wireframe" _label="Wireframe" arg-set="--wireframe"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</hgroup>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="20000"
convert="invert"/>
- <number id="speed" type="slider" arg="-speed %"
+ <number id="speed" type="slider" arg="--speed %"
_label="Rotation speed" _low-label="Slow" _high-label="Fast"
low="50" high="1000" default="500"/>
- <number id="damping" type="slider" arg="-damping %"
+ <number id="damping" type="slider" arg="--damping %"
_label="Inertial damping" _low-label="Low" _high-label="High"
low="10" high="1000" default="500" convert="invert"/>
</vgroup>
<vgroup>
- <number id="hold" type="slider" arg="-hold %"
+ <number id="hold" type="slider" arg="--hold %"
_label="Vertex-vertex force" _low-label="None" _high-label="Strong"
low="0" high="1000" default="800"/>
- <number id="complexity" type="slider" arg="-complexity %"
+ <number id="complexity" type="slider" arg="--complexity %"
_label="Complexity" _low-label="Low" _high-label="High"
low="1" high="3" default="2"/>
- <number id="spherism" type="slider" arg="-spherism %"
+ <number id="spherism" type="slider" arg="--spherism %"
_label="Sphere strength" _low-label="None" _high-label="Strong"
low="0" high="1000" default="75"/>
</vgroup>
<vgroup>
- <number id="distance" type="slider" arg="-distance %"
+ <number id="distance" type="slider" arg="--distance %"
_label="Vertex-vertex behavior" _low-label="Expand"
_high-label="Collapse" low="0" high="1000" default="100"/>
- <number id="spooky" type="slider" arg="-spooky %"
+ <number id="spooky" type="slider" arg="--spooky %"
_label="Spookiness" _low-label="None" _high-label="Spoooooky"
low="0" high="12" default="0"/>
<screensaver name="jigsaw" _label="Jigsaw" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=T5_hiY2eEeo"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="20000"
convert="invert"/>
- <number id="speed" type="slider" arg="-speed %"
+ <number id="speed" type="slider" arg="--speed %"
_label="Speed" _low-label="Slow" _high-label="Fast"
low="0.1" high="8.0" default="1.0"
convert="ratio"/>
</vgroup>
<vgroup>
- <number id="density" type="slider" arg="-complexity %"
+ <number id="density" type="slider" arg="--complexity %"
_label="Puzzle pieces" _low-label="Few" _high-label="Many"
- low="1.0" high="4.0" default="1.0"
- convert="ratio"/>
+ low="1.0" high="4.0" default="1.0"/>
- <number id="resolution" type="slider" arg="-resolution %"
+ <number id="resolution" type="slider" arg="--resolution %"
_label="Resolution" _low-label="Chunky" _high-label="Smooth"
low="50" high="300" default="100"/>
</vgroup>
<xscreensaver-image />
</vgroup>
<vgroup>
- <boolean id="wobble" _label="Tilt" arg-unset="-no-wobble"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="wobble" _label="Tilt" arg-unset="--no-wobble"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</vgroup>
</hgroup>
<screensaver name="juggle" _label="Juggle">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=E3Ae7uQtWP0"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="10000"
convert="invert"/>
- <number id="count" type="slider" arg="-count %"
+ <number id="count" type="slider" arg="--count %"
_label="Speed" _low-label="Slow" _high-label="Fast"
low="50" high="1000" default="200"
convert="invert"/>
</vgroup>
<vgroup>
- <number id="cycles" type="slider" arg="-cycles %"
+ <number id="cycles" type="slider" arg="--cycles %"
_label="Performance length" _low-label="Short" _high-label="Long"
low="50" high="1000" default="1000"/>
- <number id="tail" type="slider" arg="-tail %"
+ <number id="tail" type="slider" arg="--tail %"
_label="Trail length" _low-label="None" _high-label="Long"
low="0" high="100" default="1"/>
</vgroup>
<hgroup>
<vgroup>
- <boolean id="balls" _label="Balls" arg-unset="-no-balls"/>
- <boolean id="clubs" _label="Clubs" arg-unset="-no-clubs"/>
+ <boolean id="balls" _label="Balls" arg-unset="--no-balls"/>
+ <boolean id="clubs" _label="Clubs" arg-unset="--no-clubs"/>
</vgroup>
<vgroup>
- <boolean id="rings" _label="Rings" arg-unset="-no-rings"/>
- <boolean id="knives" _label="Knives" arg-unset="-no-knives"/>
+ <boolean id="rings" _label="Rings" arg-unset="--no-rings"/>
+ <boolean id="knives" _label="Knives" arg-unset="--no-knives"/>
</vgroup>
<vgroup>
- <boolean id="torches" _label="Flaming torches" arg-unset="-no-torches"/>
- <boolean id="bballs" _label="Bowling balls" arg-unset="-no-bballs"/>
+ <boolean id="torches" _label="Flaming torches" arg-unset="--no-torches"/>
+ <boolean id="bballs" _label="Bowling balls" arg-unset="--no-bballs"/>
</vgroup>
</hgroup>
- <boolean id="describe" _label="Print Cambridge juggling pattern descriptions" arg-unset="-no-describe"/>
- <string id="pattern" _label="Juggle this pattern" arg="-pattern %" />
+ <boolean id="describe" _label="Print Cambridge juggling pattern descriptions" arg-unset="--no-describe"/>
+ <string id="pattern" _label="Juggle this pattern" arg="--pattern %" />
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<?xml version="1.0" encoding="ISO-8859-1"?>
<screensaver name="juggler3d" _label="Juggler 3D" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=TJkKaXBOvCA"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="10000"
convert="invert"/>
- <number id="count" type="slider" arg="-count %"
+ <number id="count" type="slider" arg="--count %"
_label="Speed" _low-label="Slow" _high-label="Fast"
low="50" high="1000" default="200"
convert="invert"/>
</vgroup>
<vgroup>
- <number id="cycles" type="slider" arg="-cycles %"
+ <number id="cycles" type="slider" arg="--cycles %"
_label="Performance length" _low-label="Short" _high-label="Long"
low="50" high="1000" default="1000"/>
- <number id="tail" type="slider" arg="-tail %"
+ <number id="tail" type="slider" arg="--tail %"
_label="Trail length" _low-label="None" _high-label="Long"
low="0" high="100" default="1"/>
</vgroup>
</hgroup>
<hgroup>
- <boolean id="balls" _label="Balls" arg-unset="-no-balls"/>
- <boolean id="clubs" _label="Clubs" arg-unset="-no-clubs"/>
- <boolean id="rings" _label="Rings" arg-unset="-no-rings"/>
- <boolean id="knives" _label="Knives" arg-unset="-no-knives"/>
-<!--<boolean id="torches" _label="Flaming torches" arg-unset="-no-torches"/>-->
- <boolean id="bballs" _label="Bowling balls" arg-unset="-no-bballs"/>
+ <boolean id="balls" _label="Balls" arg-unset="--no-balls"/>
+ <boolean id="clubs" _label="Clubs" arg-unset="--no-clubs"/>
+ <boolean id="rings" _label="Rings" arg-unset="--no-rings"/>
+ <boolean id="knives" _label="Knives" arg-unset="--no-knives"/>
+ <boolean id="bballs" _label="Bowling balls" arg-unset="--no-bballs"/>
</hgroup>
- <boolean id="describe" _label="Print Cambridge juggling pattern descriptions" arg-unset="-no-describe"/>
- <string id="pattern" _label="Juggle this pattern" arg="-pattern %" />
+ <boolean id="describe" _label="Print Cambridge juggling pattern descriptions" arg-unset="--no-describe"/>
+ <string id="pattern" _label="Juggle this pattern" arg="--pattern %" />
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="julia" _label="Julia">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=cA4Rgq-rmy8"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="10000"
convert="invert"/>
- <number id="count" type="slider" arg="-count %"
+ <number id="count" type="slider" arg="--count %"
_label="Count" _low-label="Few" _high-label="Lots"
low="10" high="20000" default="1000"/>
- <number id="cycles" type="slider" arg="-cycles %"
+ <number id="cycles" type="slider" arg="--cycles %"
_label="Iterations" _low-label="Small" _high-label="Large"
low="1" high="100" default="20"/>
- <number id="ncolors" type="slider" arg="-ncolors %"
+ <number id="ncolors" type="slider" arg="--ncolors %"
_label="Number of colors" _low-label="Two" _high-label="Many"
low="1" high="255" default="200"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="kaleidescope" _label="Kaleidescope">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=mGplFlx1y3M"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="20000"
convert="invert"/>
- <number id="nsegments" type="slider" arg="-nsegments %"
+ <number id="nsegments" type="slider" arg="--nsegments %"
_label="Segments" _low-label="Few" _high-label="Many"
low="1" high="100" default="7"/>
- <number id="symmetry" type="slider" arg="-symmetry %"
+ <number id="symmetry" type="slider" arg="--symmetry %"
_label="Symmetry" _low-label="3" _high-label="32"
low="3" high="32" default="11"/>
- <number id="ntrails" type="slider" arg="-ntrails %"
+ <number id="ntrails" type="slider" arg="--ntrails %"
_label="Trails" _low-label="Few" _high-label="Many"
low="1" high="1000" default="100"/>
- <!-- #### -local_rotation [-59] -->
- <!-- #### -global_rotation [1] -->
- <!-- #### -spring_constant [5] -->
-
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="kaleidocycle" _label="Kaleidocycle" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=SJqRaCCy_vo"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="30000"
convert="invert"/>
- <number id="count" type="slider" arg="-count %"
+ <number id="count" type="slider" arg="--count %"
_label="Count" _low-label="8" _high-label="64"
low="8" high="64" default="16"/>
- <number id="speed" type="slider" arg="-speed %"
+ <number id="speed" type="slider" arg="--speed %"
_label="Speed" _low-label="Slow" _high-label="Fast"
low="0.1" high="8.0" default="1.0"
convert="ratio"/>
<vgroup>
<select id="rotation">
- <option id="no" _label="Don't rotate" arg-set="-spin 0"/>
- <option id="x" _label="Rotate around X axis" arg-set="-spin X"/>
- <option id="y" _label="Rotate around Y axis" arg-set="-spin Y"/>
+ <option id="no" _label="Don't rotate" arg-set="--spin 0"/>
+ <option id="x" _label="Rotate around X axis" arg-set="--spin X"/>
+ <option id="y" _label="Rotate around Y axis" arg-set="--spin Y"/>
<option id="z" _label="Rotate around Z axis"/>
- <option id="xy" _label="Rotate around X and Y axes" arg-set="-spin XY"/>
- <option id="xz" _label="Rotate around X and Z axes" arg-set="-spin XZ"/>
- <option id="yz" _label="Rotate around Y and Z axes" arg-set="-spin YZ"/>
- <option id="xyz" _label="Rotate around all three axes" arg-set="-spin XYZ"/>
+ <option id="xy" _label="Rotate around X and Y axes" arg-set="--spin XY"/>
+ <option id="xz" _label="Rotate around X and Z axes" arg-set="--spin XZ"/>
+ <option id="yz" _label="Rotate around Y and Z axes" arg-set="--spin YZ"/>
+ <option id="xyz" _label="Rotate around all three axes" arg-set="--spin XYZ"/>
</select>
- <boolean id="wander" _label="Wander" arg-set="-wander"/>
+ <boolean id="wander" _label="Wander" arg-set="--wander"/>
- <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="wire" _label="Wireframe" arg-set="--wireframe"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</vgroup>
</hgroup>
<screensaver name="klein" _label="Klein" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=c2gvyGVNG80"/>
<hgroup>
<select id="kleinbottle">
<option id="random" _label="Random shape"/>
- <option id="figure-8" _label="Figure 8" arg-set="-klein-bottle figure-8"/>
- <option id="pinched-torus" _label="Pinched torus" arg-set="-klein-bottle pinched-torus"/>
- <option id="lawson" _label="Lawson" arg-set="-klein-bottle lawson"/>
+ <option id="figure-8" _label="Figure 8" arg-set="--klein-bottle figure-8"/>
+ <option id="pinched-torus" _label="Pinched torus" arg-set="--klein-bottle pinched-torus"/>
+ <option id="lawson" _label="Lawson" arg-set="--klein-bottle lawson"/>
</select>
<select id="view-mode">
<option id="walk" _label="Random motion"/>
- <option id="walk" _label="Walk" arg-set="-view-mode walk"/>
- <option id="turn" _label="Turn" arg-set="-view-mode turn"/>
- <option id="walk-turn" _label="Walk and turn" arg-set="-view-mode walk-turn"/>
+ <option id="walk" _label="Walk" arg-set="--view-mode walk"/>
+ <option id="turn" _label="Turn" arg-set="--view-mode turn"/>
+ <option id="walk-turn" _label="Walk and turn" arg-set="--view-mode walk-turn"/>
</select>
<boolean id="orientation-marks" _label="Show orientation marks"
- arg-set="-orientation-marks"/>
+ arg-set="--orientation-marks"/>
</hgroup>
<hgroup>
<select id="display-mode">
<option id="random" _label="Random surface"/>
- <option id="wire" _label="Wireframe mesh" arg-set="-mode wireframe"/>
- <option id="surface" _label="Solid surface" arg-set="-mode surface"/>
- <option id="transparent" _label="Transparent surface" arg-set="-mode transparent"/>
+ <option id="wire" _label="Wireframe mesh" arg-set="--mode wireframe"/>
+ <option id="surface" _label="Solid surface" arg-set="--mode surface"/>
+ <option id="transparent" _label="Transparent surface" arg-set="--mode transparent"/>
</select>
<select id="appearance">
<option id="random" _label="Random pattern"/>
- <option id="solid" _label="Solid object" arg-set="-appearance solid"/>
- <option id="bands" _label="See-through bands" arg-set="-appearance bands"/>
+ <option id="solid" _label="Solid object" arg-set="--appearance solid"/>
+ <option id="bands" _label="See-through bands" arg-set="--appearance bands"/>
</select>
<select id="colors">
<option id="random" _label="Random coloration"/>
- <option id="twosided" _label="One-sided" arg-set="-colors one-sided"/>
- <option id="twosided" _label="Two-sided" arg-set="-colors two-sided"/>
- <option id="rainbow" _label="Rainbow colors" arg-set="-colors rainbow"/>
- <option id="depth" _label="4d depth colors" arg-set="-colors depth"/>
+ <option id="twosided" _label="One-sided" arg-set="--colors one-sided"/>
+ <option id="twosided" _label="Two-sided" arg-set="--colors two-sided"/>
+ <option id="rainbow" _label="Rainbow colors" arg-set="--colors rainbow"/>
+ <option id="depth" _label="4d depth colors" arg-set="--colors depth"/>
</select>
<boolean id="change-colors" _label="Change colors"
- arg-set="-change-colors"/>
+ arg-set="--change-colors"/>
<select id="projection3d">
<option id="random" _label="Random 3D"/>
- <option id="perspective-3d" _label="Perspective 3D" arg-set="-projection-3d perspective"/>
- <option id="orthographic-3d" _label="Orthographic 3D" arg-set="-projection-3d orthographic"/>
+ <option id="perspective-3d" _label="Perspective 3D" arg-set="--projection-3d perspective"/>
+ <option id="orthographic-3d" _label="Orthographic 3D" arg-set="--projection-3d orthographic"/>
</select>
<select id="projection4d">
<option id="random" _label="Random 4D"/>
- <option id="perspective-4d" _label="Perspective 4D" arg-set="-projection-4d perspective"/>
- <option id="orthographic-4d" _label="Orthographic 4D" arg-set="-projection-4d orthographic"/>
+ <option id="perspective-4d" _label="Perspective 4D" arg-set="--projection-4d perspective"/>
+ <option id="orthographic-4d" _label="Orthographic 4D" arg-set="--projection-4d orthographic"/>
</select>
</hgroup>
<hgroup>
<vgroup>
- <number id="speed-wx" type="slider" arg="-speed-wx %"
+ <number id="speed-wx" type="slider" arg="--speed-wx %"
_label="WX rotation speed"
_low-label="-4.0" _high-label="4.0"
low="-4.0" high="4.0" default="1.1"/>
- <number id="speed-wy" type="slider" arg="-speed-wy %"
+ <number id="speed-wy" type="slider" arg="--speed-wy %"
_label="WY rotation speed"
_low-label="-4.0" _high-label="4.0"
low="-4.0" high="4.0" default="1.3"/>
- <number id="speed-wz" type="slider" arg="-speed-wz %"
+ <number id="speed-wz" type="slider" arg="--speed-wz %"
_label="WZ rotation speed"
_low-label="-4.0" _high-label="4.0"
low="-4.0" high="4.0" default="1.5"/>
</vgroup>
<vgroup>
- <number id="speed-xy" type="slider" arg="-speed-xy %"
+ <number id="speed-xy" type="slider" arg="--speed-xy %"
_label="XY rotation speed"
_low-label="-4.0" _high-label="4.0"
low="-4.0" high="4.0" default="1.7"/>
- <number id="speed-xz" type="slider" arg="-speed-xz %"
+ <number id="speed-xz" type="slider" arg="--speed-xz %"
_label="XZ rotation speed"
_low-label="-4.0" _high-label="4.0"
low="-4.0" high="4.0" default="1.9"/>
- <number id="speed-yz" type="slider" arg="-speed-yz %"
+ <number id="speed-yz" type="slider" arg="--speed-yz %"
_label="YZ rotation speed"
_low-label="-4.0" _high-label="4.0"
low="-4.0" high="4.0" default="2.1"/>
</vgroup>
<vgroup>
- <number id="walk-direction" type="slider" arg="-walk-direction %"
+ <number id="walk-direction" type="slider" arg="--walk-direction %"
_label="Walking direction"
_low-label="-180.0" _high-label="180.0"
low="-180.0" high="180.0" default="7.0"/>
- <number id="walk-speed" type="slider" arg="-walk-speed %"
+ <number id="walk-speed" type="slider" arg="--walk-speed %"
_label="Walking speed"
_low-label="1.0" _high-label="100.0"
low="1.0" high="100.0" default="20.0"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="25000"
convert="invert"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</vgroup>
</hgroup>
<screensaver name="kumppa" _label="Kumppa">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=64ULSfxhkDY"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="10000"
convert="invert"/>
- <number id="density" type="slider" arg="-speed %"
+ <number id="density" type="slider" arg="--speed %"
_label="Density" _low-label="Low" _high-label="High"
low="0.0001" high="0.2" default="0.1"/>
- <boolean id="random" _label="Randomize" arg-unset="-no-random"/>
-<!-- <boolean id="db" _label="Double buffer" arg-set="-db"/> -->
-
-
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="random" _label="Randomize" arg-unset="--no-random"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="lament" _label="Lament" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=-TBqI4YKOKI"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="20000"
convert="invert"/>
- <boolean id="tex" _label="Textured" arg-unset="-no-texture"/>
- <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="tex" _label="Textured" arg-unset="--no-texture"/>
+ <boolean id="wire" _label="Wireframe" arg-set="--wireframe"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="laser" _label="Laser">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=QjPEa3KDlsw"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="40000"
convert="invert"/>
- <number id="count" type="spinbutton" arg="-count %"
+ <number id="count" type="spinbutton" arg="--count %"
_label="Count" low="0" high="20" default="10"/>
- <number id="cycles" type="slider" arg="-cycles %"
+ <number id="cycles" type="slider" arg="--cycles %"
_label="Duration" _low-label="Short" _high-label="Long"
low="0" high="2000" default="200"/>
- <number id="ncolors" type="slider" arg="-ncolors %"
+ <number id="ncolors" type="slider" arg="--ncolors %"
_label="Number of colors" _low-label="Two" _high-label="Many"
low="1" high="255" default="64"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="lavalite" _label="Lavalite" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=XKbtdHL35u0"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="30000"
convert="invert"/>
- <number id="speed" type="slider" arg="-speed %"
+ <number id="speed" type="slider" arg="--speed %"
_label="Activity" _low-label="Sparse" _high-label="Dense"
low="0.001" high="0.01" default="0.003"/>
</vgroup>
<vgroup>
- <number id="count" type="slider" arg="-count %"
+ <number id="count" type="slider" arg="--count %"
_label="Max blobs" _low-label="1" _high-label="10"
low="1" high="10" default="3"/>
- <number id="resolution" type="slider" arg="-resolution %"
+ <number id="resolution" type="slider" arg="--resolution %"
_label="Resolution" _low-label="Low" _high-label="High"
low="10" high="120" default="40"/>
</vgroup>
<vgroup>
<hgroup>
- <boolean id="impatient" _label="Impatient" arg-set="-impatient"/>
- <boolean id="smooth" _label="Smooth" arg-unset="-no-smooth"/>
- <boolean id="wander" _label="Wander" arg-set="-wander"/>
+ <boolean id="impatient" _label="Impatient" arg-set="--impatient"/>
+ <boolean id="smooth" _label="Smooth" arg-unset="--no-smooth"/>
+ <boolean id="wander" _label="Wander" arg-set="--wander"/>
</hgroup>
<hgroup>
- <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="wire" _label="Wireframe" arg-set="--wireframe"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</hgroup>
</vgroup>
<vgroup>
<select id="style">
- <option id="classic" _label="Classic Lavalite" arg-set="-style classic"/>
- <option id="giant" _label="Giant Lavalite" arg-set="-style giant"/>
- <option id="cone" _label="Cone Lavalite" arg-set="-style cone"/>
- <option id="rocket" _label="Rocket Lavalite" arg-set="-style rocket"/>
+ <option id="classic" _label="Classic Lavalite" arg-set="--style classic"/>
+ <option id="giant" _label="Giant Lavalite" arg-set="--style giant"/>
+ <option id="cone" _label="Cone Lavalite" arg-set="--style cone"/>
+ <option id="rocket" _label="Rocket Lavalite" arg-set="--style rocket"/>
<option id="random" _label="Random Lamp Style"/>
</select>
<select id="rotation">
- <option id="no" _label="Don't Rotate" arg-set="-spin 0"/>
- <option id="x" _label="Rotate around X axis" arg-set="-spin X"/>
- <option id="y" _label="Rotate around Y axis" arg-set="-spin Y"/>
+ <option id="no" _label="Don't Rotate" arg-set="--spin 0"/>
+ <option id="x" _label="Rotate around X axis" arg-set="--spin X"/>
+ <option id="y" _label="Rotate around Y axis" arg-set="--spin Y"/>
<option id="z" _label="Rotate around Z axis"/>
- <option id="xy" _label="Rotate around X and Y axes" arg-set="-spin XY"/>
- <option id="xz" _label="Rotate around X and Z axes" arg-set="-spin XZ"/>
- <option id="yz" _label="Rotate around Y and Z axes" arg-set="-spin YZ"/>
- <option id="xyz" _label="Rotate around all three axes" arg-set="-spin XYZ"/>
+ <option id="xy" _label="Rotate around X and Y axes" arg-set="--spin XY"/>
+ <option id="xz" _label="Rotate around X and Z axes" arg-set="--spin XZ"/>
+ <option id="yz" _label="Rotate around Y and Z axes" arg-set="--spin YZ"/>
+ <option id="xyz" _label="Rotate around all three axes" arg-set="--spin XYZ"/>
</select>
</vgroup>
<screensaver name="lcdscrub" _label="LCD Scrub">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=aWtHHBOkO4w"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="5000000" default="100000"
convert="invert"/>
<hgroup>
<vgroup>
- <number id="spread" type="spinbutton" arg="-spread %"
+ <number id="spread" type="spinbutton" arg="--spread %"
_label="Line spread" low="2" high="8192" default="8"/>
- <number id="cycles" type="spinbutton" arg="-cycles %"
+ <number id="cycles" type="spinbutton" arg="--cycles %"
_label="Cycles" low="1" high="600" default="60"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</vgroup>
<vgroup>
- <boolean id="hw" _label="Horizontal white" arg-unset="-no-hw"/>
- <boolean id="vw" _label="Vertical white" arg-unset="-no-vw"/>
- <boolean id="dw" _label="Diagonal white" arg-unset="-no-dw"/>
+ <boolean id="hw" _label="Horizontal white" arg-unset="--no-hw"/>
+ <boolean id="vw" _label="Vertical white" arg-unset="--no-vw"/>
+ <boolean id="dw" _label="Diagonal white" arg-unset="--no-dw"/>
</vgroup>
<vgroup>
- <boolean id="w" _label="Solid white" arg-unset="-no-w"/>
- <boolean id="rgb" _label="Primary colors" arg-unset="-no-rgb"/>
- <boolean id="hb" _label="Horizontal black" arg-unset="-no-hb"/>
+ <boolean id="w" _label="Solid white" arg-unset="--no-w"/>
+ <boolean id="rgb" _label="Primary colors" arg-unset="--no-rgb"/>
+ <boolean id="hb" _label="Horizontal black" arg-unset="--no-hb"/>
</vgroup>
<vgroup>
- <boolean id="vb" _label="Vertical black" arg-unset="-no-vb"/>
- <boolean id="db" _label="Diagonal black" arg-unset="-no-db"/>
- <boolean id="b" _label="Solid black" arg-unset="-no-b"/>
+ <boolean id="vb" _label="Vertical black" arg-unset="--no-vb"/>
+ <boolean id="db" _label="Diagonal black" arg-unset="--no-db"/>
+ <boolean id="b" _label="Solid black" arg-unset="--no-b"/>
</vgroup>
</hgroup>
<screensaver name="lightning" _label="Lightning">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=lUUdHtPvp5Y"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="10000"
convert="invert"/>
- <number id="ncolors" type="slider" arg="-ncolors %"
+ <number id="ncolors" type="slider" arg="--ncolors %"
_label="Number of colors" _low-label="Two" _high-label="Many"
low="1" high="255" default="64"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="lisa" _label="Lisa">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=AUbAuARmlnE"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="50000" default="17000"
convert="invert"/>
- <number id="cycles" type="slider" arg="-cycles %"
+ <number id="cycles" type="slider" arg="--cycles %"
_label="Steps" _low-label="Few" _high-label="Many"
low="1" high="1000" default="768"/>
- <number id="ncolors" type="slider" arg="-ncolors %"
+ <number id="ncolors" type="slider" arg="--ncolors %"
_label="Number of colors" _low-label="Two" _high-label="Many"
low="1" high="255" default="64"/>
</vgroup>
<vgroup>
- <number id="size" type="slider" arg="-size %"
+ <number id="size" type="slider" arg="--size %"
_label="Size" _low-label="Small" _high-label="Large"
low="10" high="500" default="500"/>
- <number id="count" type="slider" arg="-count %"
+ <number id="count" type="slider" arg="--count %"
_label="Count" _low-label="1" _high-label="20"
low="0" high="20" default="1"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</vgroup>
</hgroup>
<screensaver name="lissie" _label="Lissie">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=6EBNCXcD9f0"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="10000"
convert="invert"/>
- <number id="cycles" type="slider" arg="-cycles %"
+ <number id="cycles" type="slider" arg="--cycles %"
_label="Timeout" _low-label="Small" _high-label="Large"
low="0" high="80000" default="20000"/>
</vgroup>
<vgroup>
- <number id="ncolors" type="slider" arg="-ncolors %"
+ <number id="ncolors" type="slider" arg="--ncolors %"
_label="Number of colors" _low-label="Two" _high-label="Many"
low="1" high="255" default="200"/>
- <number id="count" type="slider" arg="-count %"
+ <number id="count" type="slider" arg="--count %"
_label="Count" _low-label="1" _high-label="20"
low="0" high="20" default="1"/>
</vgroup>
<hgroup>
<vgroup>
- <number id="size" type="spinbutton" arg="-size %"
+ <number id="size" type="spinbutton" arg="--size %"
_label="Size" low="-500" high="500" default="-200"/>
</vgroup>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</hgroup>
<xscreensaver-updater />
<screensaver name="lmorph" _label="LMorph">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=yMbMB7xQMkA"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="70000"
convert="invert"/>
- <number id="points" type="slider" arg="-points %"
+ <number id="points" type="slider" arg="--points %"
_label="Control points" _low-label="Few" _high-label="Many"
low="10" high="1000" default="200"/>
</vgroup>
<vgroup>
- <number id="steps" type="slider" arg="-steps %"
+ <number id="steps" type="slider" arg="--steps %"
_label="Interpolation steps" _low-label="Less" _high-label="More"
low="100" high="500" default="150"/>
- <number id="thickness" type="slider" arg="-linewidth %"
+ <number id="thickness" type="slider" arg="--linewidth %"
_label="Lines" _low-label="Thin" _high-label="Thick"
low="1" high="50" default="5"/>
</vgroup>
<select id="type">
<option id="random" _label="Open and closed figures"/>
- <option id="open" _label="Open figures" arg-set="-figtype open"/>
- <option id="closed" _label="Closed figures" arg-set="-figtype closed"/>
+ <option id="open" _label="Open figures" arg-set="--figtype open"/>
+ <option id="closed" _label="Closed figures" arg-set="--figtype closed"/>
</select>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="lockward" _label="Lockward" gl="yes">
- <command arg="-root" />
+ <command arg="--root" />
<video href="https://www.youtube.com/watch?v=MGwySGVQZ2M"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="20000"
convert="invert"/>
<number id="rotateidle-min" type="slider"
_label="Miniumum rotator idle time"
_low-label="Low" _high-label="High"
- low="500" high="10000" default="1000" arg="-rotateidle-min %" />
+ low="500" high="10000" default="1000" arg="--rotateidle-min %" />
<number id="blinkidle-min" type="slider"
_label="Minimum blink idle time"
_low-label="Low" _high-label="High"
- low="500" high="20000" default="1000" arg="-blinkidle-min %" />
+ low="500" high="20000" default="1000" arg="--blinkidle-min %" />
<number id="blinkdwell-min" type="slider"
_label="Minimum blink dwell time"
_low-label="Low" _high-label="High"
- low="50" high="1500" default="100" arg="-blinkdwell-min %" />
+ low="50" high="1500" default="100" arg="--blinkdwell-min %" />
<hgroup>
<boolean id="blink"
_label="Blinking effects"
- arg-unset="-no-blink" />
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ arg-unset="--no-blink" />
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</hgroup>
</vgroup>
<number id="rotateidle-max" type="slider"
_label="Maximum rotator idle time"
_low-label="Low" _high-label="High"
- low="500" high="10000" default="6000" arg="-rotateidle-max %" />
+ low="500" high="10000" default="6000" arg="--rotateidle-max %" />
<number id="blinkidle-max" type="slider"
_label="Maximum blink idle time"
_low-label="Low" _high-label="High"
- low="500" high="20000" default="9000" arg="-blinkidle-max %" />
+ low="500" high="20000" default="9000" arg="--blinkidle-max %" />
<number id="blinkdwell-max" type="slider"
_label="Maximum blink dwell time"
_low-label="Low" _high-label="High"
- low="50" high="1500" default="600" arg="-blinkdwell-max %" />
+ low="50" high="1500" default="600" arg="--blinkdwell-max %" />
</vgroup>
</hgroup>
<screensaver name="loop" _label="Loop">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=_kTMO7oEN8U"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="200000" default="100000"
convert="invert"/>
- <number id="cycles" type="slider" arg="-cycles %"
+ <number id="cycles" type="slider" arg="--cycles %"
_label="Timeout" _low-label="Small" _high-label="Large"
low="0" high="8000" default="1600"/>
- <number id="ncolors" type="slider" arg="-ncolors %"
+ <number id="ncolors" type="slider" arg="--ncolors %"
_label="Number of colors" _low-label="Two" _high-label="Many"
low="1" high="255" default="15"/>
- <number id="size" type="spinbutton" arg="-size %"
+ <number id="size" type="spinbutton" arg="--size %"
_label="Size" low="-50" high="50" default="-12"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="m6502" _label="m6502">
- <command arg="-root" />
+ <command arg="--root" />
<video href="https://www.youtube.com/watch?v=KlDw0nYwUe4"/>
- <file id="file" _label="Assembly file" arg="-file %"/>
+ <file id="file" _label="Assembly file" arg="--file %"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<hgroup>
<vgroup>
- <number id="displaytime" type="slider" arg="-displaytime %"
+ <number id="displaytime" type="slider" arg="--displaytime %"
_label="Display time for each program"
_low-label="5 seconds" _high-label="2 minutes"
low="5.0" high="120.0" default="30.0" />
- <number id="tvcolor" type="slider" arg="-tv-color %"
+ <number id="tvcolor" type="slider" arg="--tv-color %"
_label="Color Knob" _low-label="Low" _high-label="High"
low="0" high="400" default="70"/>
- <number id="tvtint" type="slider" arg="-tv-tint %"
+ <number id="tvtint" type="slider" arg="--tv-tint %"
_label="Tint Knob" _low-label="Low" _high-label="High"
low="0" high="360" default="5"/>
</vgroup>
<vgroup>
- <number id="ips" type="slider" arg="-ips %"
+ <number id="ips" type="slider" arg="--ips %"
_label="Instructions per second"
_low-label="500" _high-label="120000"
low="500" high="120000" default="15000" />
- <number id="tvbrightness" type="slider" arg="-tv-brightness %"
+ <number id="tvbrightness" type="slider" arg="--tv-brightness %"
_label="Brightness Knob" _low-label="Low" _high-label="High"
low="-75.0" high="100.0" default="3.0"/>
- <number id="tvcontrast" type="slider" arg="-tv-contrast %"
+ <number id="tvcontrast" type="slider" arg="--tv-contrast %"
_label="Contrast Knob" _low-label="Low" _high-label="High"
low="0" high="500" default="150"/>
</vgroup>
<screensaver name="mapscroller" _label="Map Scroller" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=99w8VfCU3Pg"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="30000"
convert="invert"/>
- <number id="speed" type="slider" arg="-speed %"
+ <number id="speed" type="slider" arg="--speed %"
_label="Scroll speed" _low-label="Slow" _high-label="Fast"
low="0.01" high="10.0" default="1.0"
convert="ratio"/>
</vgroup>
<vgroup>
- <number id="level" type="slider" arg="-level %"
+ <number id="level" type="slider" arg="--level %"
_label="Zoom level" _low-label="Countries" _high-label="Streets"
low="5" high="18" default="15"/>
- <number id="duration" type="slider" arg="-duration %"
+ <number id="duration" type="slider" arg="--duration %"
_label="Re-randomize every"
_low-label="1 minute" _high-label="2 hours"
low="60" high="7200" default="1800"/>
-->
<select id="map">
<option id="osm" _label="Open Street Map"/>
- <option id="osmhot" _label="OSM Humanitarian Map" arg-set="-url-template https://{a-b}.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png"/>
- <option id="toner" _label="Stamen Toner B&W Map" arg-set="-url-template http://{a-c}.tile.stamen.com/toner/{z}/{x}/{y}.png"/>
- <option id="sterrain" _label="Stamen Terrain Map" arg-set="-url-template http://{a-c}.tile.stamen.com/terrain/{z}/{x}/{y}.png"/>
- <option id="swatercolor" _label="Stamen Watercolor Map" arg-set="-url-template http://{a-c}.tile.stamen.com/watercolor/{z}/{x}/{y}.jpg"/>
+ <option id="osmhot" _label="OSM Humanitarian Map" arg-set="--url-template https://{a-b}.tile.openstreetmap.fr/hot/{z}/{x}/{y}.png"/>
+ <option id="toner" _label="Stamen Toner B&W Map" arg-set="--url-template http://{a-c}.tile.stamen.com/toner/{z}/{x}/{y}.png"/>
+ <option id="sterrain" _label="Stamen Terrain Map" arg-set="--url-template http://{a-c}.tile.stamen.com/terrain/{z}/{x}/{y}.png"/>
+ <option id="swatercolor" _label="Stamen Watercolor Map" arg-set="--url-template http://{a-c}.tile.stamen.com/watercolor/{z}/{x}/{y}.jpg"/>
<!--
- <option id="wfmbw" _label="WFM B&W Map" arg-set="-url-template https://{a-c}.tiles.wmflabs.org/bw-mapnik/{z}/{x}/{y}.png"/>
- <option id="wfmnolabel" _label="WFM No Labels Map" arg-set="-url-template https://{a-c}.tiles.wmflabs.org/osm-no-labels/{z}/{x}/{y}.png"/>
+ <option id="wfmbw" _label="WFM B&W Map" arg-set="- -url-template https://{a-c}.tiles.wmflabs.org/bw-mapnik/{z}/{x}/{y}.png"/>
+ <option id="wfmnolabel" _label="WFM No Labels Map" arg-set="- -url-template https://{a-c}.tiles.wmflabs.org/osm-no-labels/{z}/{x}/{y}.png"/>
-->
</select>
<select id="origin">
- <option id="random" _label="Fully random location" arg-set="-origin random"/>
+ <option id="random" _label="Fully random location" arg-set="--origin random"/>
<option id="randomcity" _label="Random city"/>
<!-- New York, London, Paris, Munich, everybody talk about pop muzik -->
- <option id="amsterdam" _label="Amsterdam" arg-set="-origin 52.3667,4.8833"/>
- <option id="athens" _label="Athens" arg-set="-origin 37.9842,23.7281"/>
- <option id="austin" _label="Austin" arg-set="-origin 30.3004,-97.7522"/>
- <option id="barcelona" _label="Barcelona" arg-set="-origin 41.3825,2.1769"/>
- <option id="berlin" _label="Berlin" arg-set="-origin 52.5167,13.3833"/>
- <option id="boston" _label="Boston" arg-set="-origin 42.3188,-71.0846"/>
- <option id="budapest" _label="Budapest" arg-set="-origin 47.4983,19.0408"/>
- <option id="buenosaires" _label="Buenos Aires" arg-set="-origin -34.5997,-58.3819"/>
- <option id="cairo" _label="Cairo" arg-set="-origin 30.0561,31.2394"/>
- <option id="casablanca" _label="Casablanca" arg-set="-origin 33.5992,-7.6200"/>
- <option id="chicago" _label="Chicago" arg-set="-origin 41.8373,-87.6862"/>
- <option id="havana" _label="Havana" arg-set="-origin 23.1367,-82.3589"/>
- <option id="hongkong" _label="Hong Kong" arg-set="-origin 22.3050,114.1850"/>
- <option id="honolulu" _label="Honolulu" arg-set="-origin 21.3294,-157.8460"/>
- <option id="lasvegas" _label="Las Vegas" arg-set="-origin 36.2333,-115.2654"/>
- <option id="london" _label="London" arg-set="-origin 51.5072,-0.1275"/>
- <option id="losangeles" _label="Los Angeles" arg-set="-origin 34.1139,-118.4068"/>
- <option id="luxembourg" _label="Luxembourg" arg-set="-origin 49.6106,6.1328"/>
- <option id="madrid" _label="Madrid" arg-set="-origin 40.4167,-3.7167"/>
- <option id="melbourne" _label="Melbourne" arg-set="-origin -37.8136,144.9631"/>
- <option id="mexicocity" _label="Mexico City" arg-set="-origin 19.4333,-99.1333"/>
- <option id="moscow" _label="Moscow" arg-set="-origin 55.7558,37.6178"/>
- <option id="mumbai" _label="Mumbai" arg-set="-origin 18.9667,72.8333"/>
- <option id="munich" _label="Munich" arg-set="-origin 48.1372,11.5755"/>
- <option id="neworleans" _label="New Orleans" arg-set="-origin 30.0687,-89.9288"/>
- <option id="newyork" _label="New York" arg-set="-origin 40.7834,-73.9662"/>
- <option id="paris" _label="Paris" arg-set="-origin 48.8566,2.3522"/>
- <option id="portland" _label="Portland" arg-set="-origin 45.5372,-122.6500"/>
- <option id="prague" _label="Prague" arg-set="-origin 50.0833,14.4167"/>
- <option id="rome" _label="Rome" arg-set="-origin 41.8931,12.4828"/>
- <option id="sanfrancisco" _label="San Francisco" arg-set="-origin 37.7710,-122.4126"/>
- <option id="seattle" _label="Seattle" arg-set="-origin 47.6211,-122.3244"/>
- <option id="seoul" _label="Seoul" arg-set="-origin 37.5600,126.9900"/>
- <option id="shanghai" _label="Shanghai" arg-set="-origin 31.1667,121.4667"/>
- <option id="stockholm" _label="Stockholm" arg-set="-origin 59.3294,18.0686"/>
- <option id="sydney" _label="Sydney" arg-set="-origin -33.8650,151.2094"/>
- <option id="saopaulo" _label="São Paulo" arg-set="-origin -23.5504,-46.6339"/>
- <option id="tokyo" _label="Tokyo" arg-set="-origin 35.6897,139.6922"/>
- <option id="toronto" _label="Toronto" arg-set="-origin 43.7417,-79.3733"/>
- <option id="washington" _label="Washington" arg-set="-origin 38.9047,-77.0163"/>
+ <option id="amsterdam" _label="Amsterdam" arg-set="--origin 52.3667,4.8833"/>
+ <option id="athens" _label="Athens" arg-set="--origin 37.9842,23.7281"/>
+ <option id="austin" _label="Austin" arg-set="--origin 30.3004,-97.7522"/>
+ <option id="barcelona" _label="Barcelona" arg-set="--origin 41.3825,2.1769"/>
+ <option id="berlin" _label="Berlin" arg-set="--origin 52.5167,13.3833"/>
+ <option id="boston" _label="Boston" arg-set="--origin 42.3188,-71.0846"/>
+ <option id="budapest" _label="Budapest" arg-set="--origin 47.4983,19.0408"/>
+ <option id="buenosaires" _label="Buenos Aires" arg-set="--origin -34.5997,-58.3819"/>
+ <option id="cairo" _label="Cairo" arg-set="--origin 30.0561,31.2394"/>
+ <option id="casablanca" _label="Casablanca" arg-set="--origin 33.5992,-7.6200"/>
+ <option id="chicago" _label="Chicago" arg-set="--origin 41.8373,-87.6862"/>
+ <option id="havana" _label="Havana" arg-set="--origin 23.1367,-82.3589"/>
+ <option id="hongkong" _label="Hong Kong" arg-set="--origin 22.3050,114.1850"/>
+ <option id="honolulu" _label="Honolulu" arg-set="--origin 21.3294,-157.8460"/>
+ <option id="lasvegas" _label="Las Vegas" arg-set="--origin 36.2333,-115.2654"/>
+ <option id="london" _label="London" arg-set="--origin 51.5072,-0.1275"/>
+ <option id="losangeles" _label="Los Angeles" arg-set="--origin 34.1139,-118.4068"/>
+ <option id="luxembourg" _label="Luxembourg" arg-set="--origin 49.6106,6.1328"/>
+ <option id="madrid" _label="Madrid" arg-set="--origin 40.4167,-3.7167"/>
+ <option id="melbourne" _label="Melbourne" arg-set="--origin -37.8136,144.9631"/>
+ <option id="mexicocity" _label="Mexico City" arg-set="--origin 19.4333,-99.1333"/>
+ <option id="moscow" _label="Moscow" arg-set="--origin 55.7558,37.6178"/>
+ <option id="mumbai" _label="Mumbai" arg-set="--origin 18.9667,72.8333"/>
+ <option id="munich" _label="Munich" arg-set="--origin 48.1372,11.5755"/>
+ <option id="neworleans" _label="New Orleans" arg-set="--origin 30.0687,-89.9288"/>
+ <option id="newyork" _label="New York" arg-set="--origin 40.7834,-73.9662"/>
+ <option id="paris" _label="Paris" arg-set="--origin 48.8566,2.3522"/>
+ <option id="portland" _label="Portland" arg-set="--origin 45.5372,-122.6500"/>
+ <option id="prague" _label="Prague" arg-set="--origin 50.0833,14.4167"/>
+ <option id="rome" _label="Rome" arg-set="--origin 41.8931,12.4828"/>
+ <option id="sanfrancisco" _label="San Francisco" arg-set="--origin 37.7710,-122.4126"/>
+ <option id="seattle" _label="Seattle" arg-set="--origin 47.6211,-122.3244"/>
+ <option id="seoul" _label="Seoul" arg-set="--origin 37.5600,126.9900"/>
+ <option id="shanghai" _label="Shanghai" arg-set="--origin 31.1667,121.4667"/>
+ <option id="stockholm" _label="Stockholm" arg-set="--origin 59.3294,18.0686"/>
+ <option id="sydney" _label="Sydney" arg-set="--origin -33.8650,151.2094"/>
+ <option id="saopaulo" _label="São Paulo" arg-set="--origin -23.5504,-46.6339"/>
+ <option id="tokyo" _label="Tokyo" arg-set="--origin 35.6897,139.6922"/>
+ <option id="toronto" _label="Toronto" arg-set="--origin 43.7417,-79.3733"/>
+ <option id="washington" _label="Washington" arg-set="--origin 38.9047,-77.0163"/>
</select>
</vgroup>
</hgroup>
<hgroup>
- <boolean id="titles" _label="Show coordinates" arg-unset="-no-titles"/>
- <boolean id="arrow" _label="Show arrow" arg-unset="-no-arrow"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="titles" _label="Show coordinates" arg-unset="--no-titles"/>
+ <boolean id="arrow" _label="Show arrow" arg-unset="--no-arrow"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</hgroup>
<xscreensaver-updater />
<screensaver name="marbling" _label="Marbling">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=D20sPMLwS1c"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="10000"
convert="invert"/>
- <number id="gridsize" type="slider" arg="-gridsize %"
+ <number id="gridsize" type="slider" arg="--gridsize %"
_label="Magnification" _low-label="Low" _high-label="High"
low="1" high="20" default="2"/>
- <number id="scale" type="slider" arg="-scale %"
+ <number id="scale" type="slider" arg="--scale %"
_label="Scale" _low-label="Sparse" _high-label="Dense"
low="0" high="20" default="10"/>
- <number id="iterations" type="slider" arg="-iterations %"
+ <number id="iterations" type="slider" arg="--iterations %"
_label="Complexity" _low-label="Low" _high-label="High"
low="0" high="10" default="5"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="maze" _label="Maze">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=-u4neMXIRA8"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-solve-delay %"
+ <number id="delay" type="slider" arg="--solve-delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="10000"
convert="invert"/>
<select id="generator">
<option id="mrandom" _label="Random maze generator"/>
<option id="m0" _label="Depth-first backtracking maze generator"
- arg-set="-generator 0"/>
+ arg-set="--generator 0"/>
<option id="m1" _label="Wall-building maze generator (Prim)"
- arg-set="-generator 1"/>
+ arg-set="--generator 1"/>
<option id="m2" _label="Set-joining maze generator (Kruskal)"
- arg-set="-generator 2"/>
+ arg-set="--generator 2"/>
</select>
<hgroup>
<select id="ignorance">
<option id="smart" _label="Head toward exit"/>
<option id="dumb" _label="Ignorant of exit direction"
- arg-set="-ignorant"/>
+ arg-set="--ignorant"/>
</select>
</hgroup>
<hgroup>
- <number id="grid-size" type="spinbutton" arg="-grid-size %"
+ <number id="grid-size" type="spinbutton" arg="--grid-size %"
_label="Grid size" low="0" high="100" default="0"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</hgroup>
</vgroup>
<vgroup>
- <number id="pre-delay" type="slider" arg="-pre-delay %"
+ <number id="pre-delay" type="slider" arg="--pre-delay %"
_label="Linger before solving"
_low-label="0 seconds" _high-label="10 seconds"
low="0" high="10000000" default="2000000"/>
- <number id="post-delay" type="slider" arg="-post-delay %"
+ <number id="post-delay" type="slider" arg="--post-delay %"
_label="Linger after solving"
_low-label="0 seconds" _high-label="10 seconds"
low="0" high="10000000" default="4000000"/>
<screensaver name="maze3d" _label="Maze 3D" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=VTAwxTVdyLc"/>
- <number id="speed" type="slider" arg="-speed %"
+ <number id="speed" type="slider" arg="--speed %"
_label="Speed" _low-label="Slow" _high-label="Fast"
low="0.02" high="4.0" default="1.0"
convert="ratio"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="20000"
convert="invert"/>
<hgroup>
- <boolean id="showOverlay" _label="Show Overlay" arg-set="-overlay"/>
- <boolean id="acid" _label="Acid" arg-set="-drop-acid"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showOverlay" _label="Show Overlay" arg-set="--overlay"/>
+ <boolean id="acid" _label="Acid" arg-set="--drop-acid"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</hgroup>
<hgroup>
- <number id="numRows" type="spinbutton" arg="-rows %"
+ <number id="numRows" type="spinbutton" arg="--rows %"
_label="Rows" low="2" high="24" default="12"/>
- <number id="numColumns" type="spinbutton" arg="-columns %"
+ <number id="numColumns" type="spinbutton" arg="--columns %"
_label="Columns" low="2" high="24" default="12"/>
</hgroup>
-<!--
- <hgroup>
- <file id="wallTextureFile" _label="Wall Texture" arg="-wall-texture %"/>
- <select id="wallTextureSelect">
- <option id="wallTextureBrickWall" _label="Brick Wall"/>
- <option id="wallTextureWoodFloor" _label="Wood Floor"
- arg-set="-wall-texture wood-floor"/>
- <option id="wallTextureCeilingTiles" _label="Ceiling Tiles"
- arg-set="-wall-texture ceiling-tiles"/>
- <option id="wallTextureFractal1" _label="Fractal 1"
- arg-set="-wall-texture fractal-1"/>
- <option id="wallTextureFractal2" _label="Fractal 2"
- arg-set="-wall-texture fractal-2"/>
- <option id="wallTextureFractal3" _label="Fractal 3"
- arg-set="-wall-texture fractal-3"/>
- <option id="wallTextureFractal4" _label="Fractal 4"
- arg-set="-wall-texture fractal-4"/>
- </select>
- <boolean id="dropAcidWalls" _label="Drop acid"
- arg-set="-drop-acid-walls"/>
- </hgroup>
-
- <hgroup>
- <file id="floorTextureFile" _label="Floor Texture"
- arg="-floor-texture %"/>
- <select id="floorTextureSelect">
- <option id="floorTextureWoodFloor" _label="Wood Floor"/>
- <option id="floorTextureBrickWall" _label="Brick Wall"
- arg-set="-floor-texture brick-wall"/>
- <option id="floorTextureCeilingTiles" _label="Ceiling Tiles"
- arg-set="-floor-texture ceiling-tiles"/>
- <option id="floorTextureFractal1" _label="Fractal 1"
- arg-set="-floor-texture fractal-1"/>
- <option id="floorTextureFractal2" _label="Fractal 2"
- arg-set="-floor-texture fractal-2"/>
- <option id="floorTextureFractal3" _label="Fractal 3"
- arg-set="-floor-texture fractal-3"/>
- <option id="floorTextureFractal4" _label="Fractal 4"
- arg-set="-floor-texture fractal-4"/>
- </select>
- <boolean id="dropAcidFloor" _label="Drop acid"
- arg-set="-drop-acid-floor"/>
- </hgroup>
-
- <hgroup>
- <file id="ceilingTextureFile" _label="Ceiling Texture"
- arg="-ceiling-texture %"/>
- <select id="ceilingTextureSelect">
- <option id="ceilingTextureCeilingTiles" _label="Ceiling Tiles"/>
- <option id="ceilingTextureBrickWall" _label="Brick Wall"
- arg-set="-ceiling-texture brick-wall"/>
- <option id="ceilingTextureWoodFloor" _label="Wood Floor"
- arg-set="-ceiling-texture wood-floor"/>
- <option id="ceilingTextureFractal1" _label="Fractal 1"
- arg-set="-ceiling-texture fractal-1"/>
- <option id="ceilingTextureFractal2" _label="Fractal 2"
- arg-set="-ceiling-texture fractal-2"/>
- <option id="ceilingTextureFractal3" _label="Fractal 3"
- arg-set="-ceiling-texture fractal-3"/>
- <option id="ceilingTextureFractal4" _label="Fractal 4"
- arg-set="-ceiling-texture fractal-4"/>
- </select>
- <boolean id="dropAcidCeiling" _label="Drop acid"
- arg-set="-drop-acid-ceiling"/>
- </hgroup>
--->
-
<hgroup>
<number id="numInverters" type="spinbutton"
- arg="-inverters %" _label="Inverters" low="0"
+ arg="--inverters %" _label="Inverters" low="0"
high="100" default="10"/>
<number id="numRats" type="spinbutton"
- arg="-rats %" _label="Rats" low="0" high="100"
+ arg="--rats %" _label="Rats" low="0" high="100"
default="1"/>
-
-<!--
- <vgroup>
- <number id="numGl3dTexts" type="spinbutton"
- arg="-gl-3d-texts %" _label="OpenGL"
- low="0" high="100" default="3"/>
- <number id="numGlRedbooks" type="spinbutton"
- arg="-gl-redbooks %" _label="Redbooks"
- low="0" high="100" default="3"/>
- </vgroup>
--->
</hgroup>
<xscreensaver-updater />
<screensaver name="memscroller" _label="Mem Scroller">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=DQJRNlTKCdA"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="10000"
convert="invert"/>
<hgroup>
<select id="seedMode">
<option id="ram" _label="Dump memory"/>
- <option id="random" _label="Draw random numbers" arg-set="-random"/>
+ <option id="random" _label="Draw random numbers" arg-set="--random"/>
</select>
<select id="drawMode">
<option id="color" _label="Draw in RGB"/>
- <option id="mono" _label="Draw green" arg-set="-mono"/>
+ <option id="mono" _label="Draw green" arg-set="--mono"/>
</select>
</hgroup>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="menger" _label="Menger" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=qpnuNJH9cLw"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="30000"
convert="invert"/>
- <number id="descent" type="slider" arg="-speed %"
+ <number id="descent" type="slider" arg="--speed %"
_label="Duration" _low-label="Short" _high-label="Long"
low="2" high="500" default="150"
convert="invert"/>
- <number id="depth" type="spinbutton" arg="-depth %"
+ <number id="depth" type="spinbutton" arg="--depth %"
_label="Max depth" low="1" high="6" default="3"/>
- <!-- #### -no-optimize -->
-
- <boolean id="wander" _label="Wander" arg-unset="-no-wander"/>
+ <boolean id="wander" _label="Wander" arg-unset="--no-wander"/>
<select id="rotation">
- <option id="no" _label="Don't rotate" arg-set="-spin 0"/>
- <option id="x" _label="Rotate around X axis" arg-set="-spin X"/>
- <option id="y" _label="Rotate around Y axis" arg-set="-spin Y"/>
- <option id="z" _label="Rotate around Z axis" arg-set="-spin Z"/>
- <option id="xy" _label="Rotate around X and Y axes" arg-set="-spin XY"/>
- <option id="xz" _label="Rotate around X and Z axes" arg-set="-spin XZ"/>
- <option id="yz" _label="Rotate around Y and Z axes" arg-set="-spin YZ"/>
+ <option id="no" _label="Don't rotate" arg-set="--spin 0"/>
+ <option id="x" _label="Rotate around X axis" arg-set="--spin X"/>
+ <option id="y" _label="Rotate around Y axis" arg-set="--spin Y"/>
+ <option id="z" _label="Rotate around Z axis" arg-set="--spin Z"/>
+ <option id="xy" _label="Rotate around X and Y axes" arg-set="--spin XY"/>
+ <option id="xz" _label="Rotate around X and Z axes" arg-set="--spin XZ"/>
+ <option id="yz" _label="Rotate around Y and Z axes" arg-set="--spin YZ"/>
<option id="xyz" _label="Rotate around all three axes"/>
</select>
- <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="wire" _label="Wireframe" arg-set="--wireframe"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="metaballs" _label="Meta Balls">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=wcdKHCp9foY"/>
- <!-- #### -color [random] -->
-
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="10000"
convert="invert"/>
- <number id="cycles" type="slider" arg="-cycles %"
+ <number id="cycles" type="slider" arg="--cycles %"
_label="Duration" _low-label="Short" _high-label="Long"
low="100" high="3000" default="1000"/>
- <number id="ncolors" type="slider" arg="-ncolors %"
+ <number id="ncolors" type="slider" arg="--ncolors %"
_label="Number of colors" _low-label="Two" _high-label="Many"
low="2" high="256" default="256"/>
</vgroup>
<vgroup>
- <number id="count" type="slider" arg="-count %"
+ <number id="count" type="slider" arg="--count %"
_label="Ball count" _low-label="Two" _high-label="Many"
low="2" high="255" default="10"/>
- <number id="radius" type="slider" arg="-radius %"
+ <number id="radius" type="slider" arg="--radius %"
_label="Ball Radius" _low-label="Small" _high-label="Big" low="2" high="100" default="100"/>
- <number id="delta" type="slider" arg="-delta %"
+ <number id="delta" type="slider" arg="--delta %"
_label="Ball Movement" _low-label="Small" _high-label="Big" low="1" high="20" default="3"/>
</vgroup>
</hgroup>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="mirrorblob" _label="Mirror Blob" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=o4GTO18KHe8"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="10000"
convert="invert"/>
- <number id="zoom" type="slider" arg="-zoom %"
+ <number id="zoom" type="slider" arg="--zoom %"
_label="Zoom"
_low-label="0.1x" _high-label="3.0x"
low="0.1" high="3.0" default="1.0"
convert="ratio"/>
- <number id="hold_time" type="slider" arg="-hold-time %"
+ <number id="hold_time" type="slider" arg="--hold-time %"
_label="Time until loading a new image"
_low-label="5 sec" _high-label="5 min"
low="5.0" high="300.0" default="30.0"/>
- <number id="fade_speed" type="slider" arg="-fade-time %"
+ <number id="fade_speed" type="slider" arg="--fade-time %"
_label="Transition duration"
_low-label="None" _high-label="30 sec"
low="0.0" high="30.0" default="5.0"/>
</vgroup>
<vgroup>
- <number id="resolution" type="slider" arg="-resolution %"
+ <number id="resolution" type="slider" arg="--resolution %"
_low-label="Low" _high-label="High"
_label="Resolution" low="4" high="50" default="30"/>
- <number id="bumps" type="slider" arg="-bumps %"
+ <number id="bumps" type="slider" arg="--bumps %"
_low-label="None" _high-label="50 bumps"
_label="Bumps" low="0" high="50" default="10"/>
- <number id="blend" type="slider" arg="-blend %"
+ <number id="blend" type="slider" arg="--blend %"
_low-label="Clear" _high-label="Opaque"
_label="Transparency" low="0.1" high="1.0" default="1.0"/>
</vgroup>
<hgroup>
<vgroup>
- <boolean id="walls" _label="Enable walls" arg-set="-walls"/>
- <boolean id="colour" _label="Enable colouring" arg-set="-colour"/>
- <boolean id="texture" _label="Enable reflected image" arg-unset="-no-texture"/>
+ <boolean id="walls" _label="Enable walls" arg-set="--walls"/>
+ <boolean id="colour" _label="Enable colouring" arg-set="--colour"/>
+ <boolean id="texture" _label="Enable reflected image" arg-unset="--no-texture"/>
</vgroup>
<vgroup>
- <boolean id="backgound" _label="Show image on background" arg-unset="-no-paint-background"/>
- <boolean id="offset_texture" _label="Offset texture coordinates" arg-set="-offset-texture"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="backgound" _label="Show image on background" arg-unset="--no-paint-background"/>
+ <boolean id="offset_texture" _label="Offset texture coordinates" arg-set="--offset-texture"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</vgroup>
<vgroup>
<select id="render">
- <option id="wire" _label="Wireframe" arg-set="-wire"/>
+ <option id="wire" _label="Wireframe" arg-set="--wire"/>
<option id="solid" _label="Solid surface"/>
</select>
</vgroup>
<screensaver name="mismunch" _label="Mismunch">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=aXNIYpdh8Ug"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="10000"
convert="invert"/>
- <number id="duration" type="slider" arg="-clear %"
+ <number id="duration" type="slider" arg="--clear %"
_label="Duration" _low-label="Short" _high-label="Long"
low="1" high="200" default="65"/>
- <number id="simultaneous" type="slider" arg="-simul %"
+ <number id="simultaneous" type="slider" arg="--simul %"
_label="Simultaneous squares" _low-label="One" _high-label="Many"
low="1" high="20" default="5"/>
<select id="mode">
<option id="xor" _label="XOR"/>
- <option id="solid" _label="Solid" arg-set="-no-xor"/>
+ <option id="solid" _label="Solid" arg-set="--no-xor"/>
</select>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="moebius" _label="Möbius" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=77Nib6jQrXc"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="20000"
convert="invert"/>
- <boolean id="solid" _label="Solid floor" arg-set="-solidmoebius"/>
- <boolean id="ants" _label="Draw ants" arg-unset="-no-ants"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="solid" _label="Solid floor" arg-set="--solidmoebius"/>
+ <boolean id="ants" _label="Draw ants" arg-unset="--no-ants"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="moebiusgears" _label="Möbius Gears" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=kpT6j2-9b40"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="30000"
convert="invert"/>
- <number id="speed" type="slider" arg="-speed %"
+ <number id="speed" type="slider" arg="--speed %"
_label="Speed" _low-label="Slow" _high-label="Fast"
low="0.01" high="5.0" default="1.0"
convert="ratio"/>
<hgroup>
- <number id="count" type="spinbutton" arg="-count %"
+ <number id="count" type="spinbutton" arg="--count %"
_label="Number of gears" low="13" high="99" default="17"/>
- <number id="teeth" type="spinbutton" arg="-teeth %"
+ <number id="teeth" type="spinbutton" arg="--teeth %"
_label="Number of teeth" low="7" high="49" default="15"/>
</hgroup>
<hgroup>
- <boolean id="wander" _label="Wander" arg-unset="-no-wander"/>
- <boolean id="spin" _label="Spin" arg-unset="-no-spin"/>
- <boolean id="roll" _label="Roll" arg-unset="-no-roll"/>
- <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
+ <boolean id="wander" _label="Wander" arg-unset="--no-wander"/>
+ <boolean id="spin" _label="Spin" arg-unset="--no-spin"/>
+ <boolean id="roll" _label="Roll" arg-unset="--no-roll"/>
+ <boolean id="wire" _label="Wireframe" arg-set="--wireframe"/>
</hgroup>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="moire" _label="Moiré">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=S50zFVcUe4s"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Duration" _low-label="1 second" _high-label="1 minute"
low="1" high="60" default="5"/>
- <number id="ncolors" type="slider" arg="-ncolors %"
+ <number id="ncolors" type="slider" arg="--ncolors %"
_label="Number of colors" _low-label="Two" _high-label="Many"
low="1" high="255" default="64"/>
- <number id="offset" type="slider" arg="-offset %"
+ <number id="offset" type="slider" arg="--offset %"
_label="Offset" _low-label="Small" _high-label="Large"
low="1" high="200" default="50"/>
- <!-- #### -no-random -->
-
-<!-- <boolean id="shm" _label="Use shared memory" arg-unset="-no-shm"/> -->
-
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="moire2" _label="Moiré 2">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=7iBNbYCo8so"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="50000"
convert="invert"/>
- <number id="ncolors" type="slider" arg="-ncolors %"
+ <number id="ncolors" type="slider" arg="--ncolors %"
_label="Number of colors" _low-label="Two" _high-label="Many"
low="1" high="255" default="150"/>
- <number id="thickness" type="spinbutton" arg="-thickness %"
+ <number id="thickness" type="spinbutton" arg="--thickness %"
_label="Thickness" low="0" high="100" default="0"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="molecule" _label="Molecule" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=D1A0tNcPL4M"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="10000"
convert="invert"/>
- <number id="timeout" type="slider" arg="-timeout %"
+ <number id="timeout" type="slider" arg="--timeout %"
_label="Duration" _low-label="5 seconds" _high-label="2 minutes"
low="5" high="120" default="20"/>
<hgroup>
<vgroup>
- <boolean id="labels" _label="Label atoms" arg-unset="-no-labels"/>
- <boolean id="titles" _label="Describe molecule" arg-unset="-no-titles"/>
- <boolean id="bbox" _label="Draw bounding box" arg-set="-bbox"/>
- <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
+ <boolean id="labels" _label="Label atoms" arg-unset="--no-labels"/>
+ <boolean id="titles" _label="Describe molecule" arg-unset="--no-titles"/>
+ <boolean id="bbox" _label="Draw bounding box" arg-set="--bbox"/>
+ <boolean id="wire" _label="Wireframe" arg-set="--wireframe"/>
</vgroup>
<vgroup>
- <boolean id="atoms" _label="Draw atomic nuclei" arg-unset="-no-atoms"/>
- <boolean id="bonds" _label="Draw atomic bonds" arg-unset="-no-bonds"/>
- <boolean id="shells" _label="Draw electron shells" arg-unset="-no-shells"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="atoms" _label="Draw atomic nuclei" arg-unset="--no-atoms"/>
+ <boolean id="bonds" _label="Draw atomic bonds" arg-unset="--no-bonds"/>
+ <boolean id="shells" _label="Draw electron shells" arg-unset="--no-shells"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</vgroup>
</hgroup>
<hgroup>
- <boolean id="wander" _label="Wander" arg-set="-wander"/>
+ <boolean id="wander" _label="Wander" arg-set="--wander"/>
<select id="rotation">
- <option id="no" _label="Don't rotate" arg-set="-spin 0"/>
- <option id="x" _label="Rotate around X axis" arg-set="-spin X"/>
- <option id="y" _label="Rotate around Y axis" arg-set="-spin Y"/>
- <option id="z" _label="Rotate around Z axis" arg-set="-spin Z"/>
- <option id="xy" _label="Rotate around X and Y axes" arg-set="-spin XY"/>
- <option id="xz" _label="Rotate around X and Z axes" arg-set="-spin XZ"/>
- <option id="yz" _label="Rotate around Y and Z axes" arg-set="-spin YZ"/>
+ <option id="no" _label="Don't rotate" arg-set="--spin 0"/>
+ <option id="x" _label="Rotate around X axis" arg-set="--spin X"/>
+ <option id="y" _label="Rotate around Y axis" arg-set="--spin Y"/>
+ <option id="z" _label="Rotate around Z axis" arg-set="--spin Z"/>
+ <option id="xy" _label="Rotate around X and Y axes" arg-set="--spin XY"/>
+ <option id="xz" _label="Rotate around X and Z axes" arg-set="--spin XZ"/>
+ <option id="yz" _label="Rotate around Y and Z axes" arg-set="--spin YZ"/>
<option id="xyz" _label="Rotate around all three axes"/>
</select>
</hgroup>
- <file id="molecule" _label="PDB file or directory" arg="-molecule %"/>
+ <file id="molecule" _label="PDB file or directory" arg="--molecule %"/>
<xscreensaver-updater />
<screensaver name="morph3d" _label="Morph 3D" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=lNtDppjOli4"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="40000"
convert="invert"/>
<select id="object">
<option id="random" _label="Random object"/>
- <option id="tetra" _label="Tetrahedron" arg-set="-count 1"/>
- <option id="cube" _label="Cube" arg-set="-count 2"/>
- <option id="octa" _label="Octahedron" arg-set="-count 3"/>
- <option id="dodeca" _label="Dodecahedron" arg-set="-count 4"/>
- <option id="icosa" _label="Icosahedron" arg-set="-count 5"/>
+ <option id="tetra" _label="Tetrahedron" arg-set="--count 1"/>
+ <option id="cube" _label="Cube" arg-set="--count 2"/>
+ <option id="octa" _label="Octahedron" arg-set="--count 3"/>
+ <option id="dodeca" _label="Dodecahedron" arg-set="--count 4"/>
+ <option id="icosa" _label="Icosahedron" arg-set="--count 5"/>
</select>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="mountain" _label="Mountain">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=knqnPcZGqkA"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="20000"
convert="invert"/>
- <number id="count" type="slider" arg="-count %"
+ <number id="count" type="slider" arg="--count %"
_label="Peaks" _low-label="One" _high-label="Lots"
low="1" high="100" default="30"/>
- <number id="ncolors" type="slider" arg="-ncolors %"
+ <number id="ncolors" type="slider" arg="--ncolors %"
_label="Number of colors" _low-label="Two" _high-label="Many"
low="1" high="255" default="64"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="munch" _label="Munch">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=aXNIYpdh8Ug"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="10000"
convert="invert"/>
- <number id="duration" type="slider" arg="-clear %"
+ <number id="duration" type="slider" arg="--clear %"
_label="Duration" _low-label="Short" _high-label="Long"
low="1" high="200" default="65"/>
- <number id="simultaneous" type="slider" arg="-simul %"
+ <number id="simultaneous" type="slider" arg="--simul %"
_label="Simultaneous squares" _low-label="One" _high-label="Many"
low="1" high="20" default="5"/>
</vgroup>
<vgroup>
<select id="mismunch">
<option id="random" _label="Munch or mismunch"/>
- <option id="munch" _label="Munch only" arg-set="-classic"/>
- <option id="mismunch" _label="Mismunch only" arg-set="-mismunch"/>
+ <option id="munch" _label="Munch only" arg-set="--classic"/>
+ <option id="mismunch" _label="Mismunch only" arg-set="--mismunch"/>
</select>
<select id="mode">
<option id="xor" _label="XOR"/>
- <option id="solid" _label="Solid" arg-set="-no-xor"/>
+ <option id="solid" _label="Solid" arg-set="--no-xor"/>
</select>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="nakagin" _label="Nakagin" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=JRXglvnKb6A"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="30000"
convert="invert"/>
- <number id="speed" type="slider" arg="-speed %"
+ <number id="speed" type="slider" arg="--speed %"
_label="Scrolling speed" _low-label="Slow" _high-label="Fast"
low="0.01" high="8.0" default="1.0"
convert="ratio"/>
<hgroup>
- <boolean id="spin" _label="Spin" arg-unset="-no-spin"/>
- <boolean id="wander" _label="Wander" arg-set="-wander"/>
- <boolean id="tilt" _label="Tilt" arg-unset="-no-tilt"/>
- <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="spin" _label="Spin" arg-unset="--no-spin"/>
+ <boolean id="wander" _label="Wander" arg-set="--wander"/>
+ <boolean id="tilt" _label="Tilt" arg-unset="--no-tilt"/>
+ <boolean id="wire" _label="Wireframe" arg-set="--wireframe"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</hgroup>
</vgroup>
<screensaver name="nerverot" _label="Nerve Rot">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=oUfgDnyGqHM"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="10000"
convert="invert"/>
- <number id="iters" type="slider" arg="-max-iters %"
+ <number id="iters" type="slider" arg="--max-iters %"
_label="Duration" _low-label="Short" _high-label="Long"
low="100" high="8000" default="1200"/>
- <number id="count" type="slider" arg="-count %"
+ <number id="count" type="slider" arg="--count %"
_label="Blot count" _low-label="Few" _high-label="Many"
low="1" high="1000" default="250"/>
- <number id="ncolors" type="slider" arg="-colors %"
+ <number id="ncolors" type="slider" arg="--colors %"
_label="Colors" _low-label="Two" _high-label="Many"
low="1" high="255" default="4"/>
</vgroup>
<vgroup>
- <number id="event" type="slider" arg="-event-chance %"
+ <number id="event" type="slider" arg="--event-chance %"
_label="Changes" _low-label="Seldom" _high-label="Frequent"
low="0.0" high="1.0" default="0.2"/>
- <number id="nervous" type="slider" arg="-nervousness %"
+ <number id="nervous" type="slider" arg="--nervousness %"
_label="Nervousness" _low-label="Calm" _high-label="Spastic"
low="0.0" high="1.0" default="0.3"/>
- <number id="mnr" type="slider" arg="-max-nerve-radius %"
+ <number id="mnr" type="slider" arg="--max-nerve-radius %"
_label="Crunchiness" _low-label="Low" _high-label="High"
low="0.0" high="1.0" default="0.7"/>
- <number id="linewidth" type="spinbutton" arg="-line-width %"
+ <number id="linewidth" type="spinbutton" arg="--line-width %"
_label="Line thickness" low="0" high="100" default="0"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</vgroup>
</hgroup>
- <!-- #### -iter-amt [0.01] -->
- <!-- #### -min-scale [0.6] -->
- <!-- #### -max-scale [1.75] -->
- <!-- #### -min-radius [3] -->
- <!-- #### -max-radius [25] -->
-
<xscreensaver-updater />
<_description>
<screensaver name="noof" _label="Noof" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=x5DQjgYqmn0"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="10000"
convert="invert"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="noseguy" _label="Nose Guy">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=ONJlg9Y_TLI"/>
<xscreensaver-text />
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="pacman" _label="Pac-Man">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=G-pdjis0ECw"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="10000"
convert="invert"/>
- <number id="size" type="spinbutton" arg="-size %"
+ <number id="size" type="spinbutton" arg="--size %"
_label="Player size" low="0" high="200" default="0"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="pedal" _label="Pedal">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=VFibXcP1JH0"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Duration" _low-label="1 second" _high-label="1 minute"
low="1" high="60" default="5"/>
- <number id="lines" type="slider" arg="-maxlines %"
+ <number id="lines" type="slider" arg="--maxlines %"
_label="Lines" _low-label="Few" _high-label="Many"
low="100" high="5000" default="1000"/>
- <!-- #### -fadedelay [200000] -->
- <!-- #### -foreground [white] -->
- <!-- #### -background [black] -->
-
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="peepers" _label="Peepers" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=9xwPoLRKff8"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="30000"
convert="invert"/>
- <number id="speed" type="slider" arg="-speed %"
+ <number id="speed" type="slider" arg="--speed %"
_label="Speed" _low-label="Slow" _high-label="Fast"
low="0.05" high="2.0" default="1.0"
convert="ratio"/>
- <number id="count" type="slider" arg="-count %"
+ <number id="count" type="slider" arg="--count %"
_label="Number of eyes" _low-label="Few" _high-label="Many"
low="0" high="50" default="0"/>
</vgroup>
<vgroup>
<select id="mode">
- <option id="bounce" _label="Bounce" arg-set="-mode bounce"/>
- <option id="scroll" _label="Scroll" arg-set="-mode scroll"/>
+ <option id="bounce" _label="Bounce" arg-set="--mode bounce"/>
+ <option id="scroll" _label="Scroll" arg-set="--mode scroll"/>
<option id="random" _label="Bounce or scroll"/>
- <option id="xeyes" _label="Grid" arg-set="-mode xeyes"/>
- <option id="beholder" _label="Beholder" arg-set="-mode beholder"/>
+ <option id="xeyes" _label="Grid" arg-set="--mode xeyes"/>
+ <option id="beholder" _label="Beholder" arg-set="--mode beholder"/>
</select>
- <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="wire" _label="Wireframe" arg-set="--wireframe"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
</vgroup>
<screensaver name="penetrate" _label="Penetrate">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=iuutzMOVYgI"/>
- <number id="bgrowth" type="slider" arg="-bgrowth %"
+ <number id="bgrowth" type="slider" arg="--bgrowth %"
_label="Explosions" _low-label="Slow" _high-label="Fast"
low="1" high="20" default="5"/>
- <number id="lrate" type="slider" arg="-lrate %"
+ <number id="lrate" type="slider" arg="--lrate %"
_label="Lasers" _low-label="Slow" _high-label="Fast"
low="10" high="200" default="80"
convert="invert"/>
<select id="mode">
<option id="dumb" _label="Start badly, but learn"/>
- <option id="smart" _label="Always play well" arg-set="-smart"/>
+ <option id="smart" _label="Always play well" arg-set="--smart"/>
</select>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="penrose" _label="Penrose">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=atlkrWkbYHk"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="10000"
convert="invert"/>
- <number id="ncolors" type="slider" arg="-ncolors %"
+ <number id="ncolors" type="slider" arg="--ncolors %"
_label="Number of colors" _low-label="Two" _high-label="Many"
low="1" high="255" default="64"/>
</vgroup>
<vgroup>
- <number id="size" type="slider" arg="-size %"
+ <number id="size" type="slider" arg="--size %"
_label="Tile size" _low-label="Small" _high-label="Large"
low="1" high="100" default="40"/>
- <boolean id="ammann" _label="Draw ammann lines" arg-set="-ammann"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="ammann" _label="Draw ammann lines" arg-set="--ammann"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</vgroup>
</hgroup>
<screensaver name="petri" _label="Petri">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=QkJ9cN0QQd8"/>
<hgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="10000"
convert="invert"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</hgroup>
<hgroup>
<vgroup>
- <number id="diaglim" type="slider" arg="-diaglim %"
+ <number id="diaglim" type="slider" arg="--diaglim %"
_label="Colony shape" _low-label="Square" _high-label="Diamond"
low="1.0" high="2.0" default="1.414"
convert="invert"/>
- <number id="anychan" type="slider" arg="-anychan %"
+ <number id="anychan" type="slider" arg="--anychan %"
_label="Fertility" _low-label="Low" _high-label="High"
low="0.0" high="0.25" default="0.0015"/>
- <number id="minorchan" type="slider" arg="-minorchan %"
+ <number id="minorchan" type="slider" arg="--minorchan %"
_label="Offspring" _low-label="Few" _high-label="Many"
low="0.0" high="1.0" default="0.5"/>
- <number id="instantdeathchan" type="slider" arg="-instantdeathchan %"
+ <number id="instantdeathchan" type="slider" arg="--instantdeathchan %"
_label="Death comes" _low-label="Slowly" _high-label="Quickly"
low="0.0" high="1.0" default="0.2"/>
</vgroup>
<vgroup>
- <number id="minlifespeed" type="slider" arg="-minlifespeed %"
+ <number id="minlifespeed" type="slider" arg="--minlifespeed %"
_label="Minimum rate of growth" _low-label="Slow" _high-label="Fast"
low="0.0" high="1.0" default="0.04"/>
- <number id="maxlifespeed" type="slider" arg="-maxlifespeed %"
+ <number id="maxlifespeed" type="slider" arg="--maxlifespeed %"
_label="Maximum rate of growth" _low-label="Slow" _high-label="Fast"
low="0.0" high="1.0" default="0.13"/>
- <number id="mindeathspeed" type="slider" arg="-mindeathspeed %"
+ <number id="mindeathspeed" type="slider" arg="--mindeathspeed %"
_label="Minimum rate of death" _low-label="Slow" _high-label="Fast"
low="0.0" high="1.0" default="0.42"/>
- <number id="maxdeathspeed" type="slider" arg="-maxdeathspeed %"
+ <number id="maxdeathspeed" type="slider" arg="--maxdeathspeed %"
_label="Maximum rate of death" _low-label="Slow" _high-label="Fast"
low="0.0" high="1.0" default="0.46"/>
</vgroup>
<vgroup>
- <number id="minlifespan" type="slider" arg="-minlifespan %"
+ <number id="minlifespan" type="slider" arg="--minlifespan %"
_label="Minimum lifespan" _low-label="Short" _high-label="Long"
low="0" high="3000" default="500"/>
- <number id="maxlifespan" type="slider" arg="-maxlifespan %"
+ <number id="maxlifespan" type="slider" arg="--maxlifespan %"
_label="Maximum lifespan" _low-label="Short" _high-label="Long"
low="0" high="3000" default="1500"/>
- <number id="size" type="spinbutton" arg="-size %"
+ <number id="size" type="spinbutton" arg="--size %"
_label="Cell size" low="0" high="100" default="2"/>
- <number id="count" type="spinbutton" arg="-count %"
+ <number id="count" type="spinbutton" arg="--count %"
_label="Mold varieties" low="0" high="20" default="20"/>
</vgroup>
</hgroup>
- <!-- #### -mem-throttle [22M] -->
-
<xscreensaver-updater />
<_description>
<screensaver name="phosphor" _label="Phosphor">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=G6ZWTrl7pV0"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="50000"
convert="invert"/>
- <number id="scale" type="spinbutton" arg="-scale %"
+ <number id="scale" type="spinbutton" arg="--scale %"
_label="Font scale" low="1" high="20" default="6"/>
- <number id="fade" type="slider" arg="-ticks %"
+ <number id="fade" type="slider" arg="--ticks %"
_label="Fade" _low-label="Slow" _high-label="Fast"
low="1" high="100" default="20"
convert="invert"/>
<select id="fg">
<option id="green" _label="Green" />
<!-- DarkOrange is probably the closest named color. -->
- <option id="DarkOrange" _label="Amber" arg-set="-fg #ff7900" />
- <option id="white" _label="White" arg-set="-fg white" />
+ <option id="DarkOrange" _label="Amber" arg-set="--fg #ff7900" />
+ <option id="white" _label="White" arg-set="--fg white" />
</select>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</vgroup>
<vgroup>
<xscreensaver-text />
<screensaver name="photopile" _label="Photo Pile" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=snm7o95AR8E"/>
<hgroup>
<vgroup>
- <number id="scale" type="slider" arg="-scale %"
+ <number id="scale" type="slider" arg="--scale %"
_label="Image size"
_low-label="Small" _high-label="Large"
low="0.1" high="0.9" default="0.4"/>
- <number id="tilt" type="slider" arg="-maxTilt %"
+ <number id="tilt" type="slider" arg="--maxTilt %"
_label="Maximum angle from vertical"
_low-label="0 deg" _high-label="90 deg"
low="0" high="90" default="50"/>
- <number id="count" type="spinbutton" arg="-count %"
+ <number id="count" type="spinbutton" arg="--count %"
_label="Number of images" low="1" high="20" default="7"/>
- <boolean id="polaroid" _label="Simulate instant film" arg-unset="-no-polaroid"/>
+ <boolean id="polaroid" _label="Simulate instant film" arg-unset="--no-polaroid"/>
- <boolean id="clip" _label="Instant film theme" arg-unset="-no-clip"/>
+ <boolean id="clip" _label="Instant film theme" arg-unset="--no-clip"/>
- <boolean id="shadows" _label="Draw drop shadows" arg-unset="-no-shadows"/>
+ <boolean id="shadows" _label="Draw drop shadows" arg-unset="--no-shadows"/>
</vgroup>
<vgroup>
- <number id="speed" type="slider" arg="-speed %"
+ <number id="speed" type="slider" arg="--speed %"
_label="Animation speed" _low-label="Slow" _high-label="Fast"
low="0.1" high="8.0" default="1.0"
convert="ratio"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="10000"
convert="invert"/>
- <number id="duration" type="slider" arg="-duration %"
+ <number id="duration" type="slider" arg="--duration %"
_label="Time until loading a new image"
_low-label="Short" _high-label="Long"
low="1" high="60" default="5"/>
- <boolean id="titles" _label="Show file names" arg-unset="-no-titles"/>
+ <boolean id="titles" _label="Show file names" arg-unset="--no-titles"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</vgroup>
</hgroup>
<screensaver name="piecewise" _label="Piecewise">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=3gQr1FxFSe0"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="10000"
convert="invert"/>
- <number id="count" type="slider" arg="-count %"
+ <number id="count" type="slider" arg="--count %"
_label="Count" _low-label="Few" _high-label="Many"
low="4" high="100" default="32"/>
- <number id="colorspeed" type="slider" arg="-colorspeed %"
+ <number id="colorspeed" type="slider" arg="--colorspeed %"
_label="Color shift" _low-label="Slow" _high-label="Fast"
low="0" high="100" default="10"/>
</vgroup>
<vgroup>
- <number id="minradius" type="slider" arg="-minradius %"
+ <number id="minradius" type="slider" arg="--minradius %"
_label="Minimum radius" _low-label="Small" _high-label="Large"
low="0.01" high="0.5" default="0.05"/>
- <number id="maxradius" type="slider" arg="-maxradius %"
+ <number id="maxradius" type="slider" arg="--maxradius %"
_label="Maximum radius" _low-label="Small" _high-label="Large"
low="0.01" high="0.5" default="0.2"/>
</vgroup>
</hgroup>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="pinion" _label="Pinion" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=rHY8dR1urQk"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="15000"
convert="invert"/>
- <number id="spin" type="slider" arg="-spin %"
+ <number id="spin" type="slider" arg="--spin %"
_label="Rotation speed" _low-label="Slow" _high-label="Fast"
low="0.1" high="7.0" default="1.0"
convert="ratio"/>
- <number id="scroll" type="slider" arg="-scroll %"
+ <number id="scroll" type="slider" arg="--scroll %"
_label="Scrolling speed" _low-label="Slow" _high-label="Fast"
low="0.1" high="8.0" default="1.0"
convert="ratio"/>
</vgroup>
<vgroup>
- <number id="size" type="slider" arg="-size %"
+ <number id="size" type="slider" arg="--size %"
_label="Gear size" _low-label="Tiny" _high-label="Huge"
low="0.1" high="3.0" default="1.0"
convert="ratio"/>
- <number id="max-rpm" type="slider" arg="-max-rpm %"
+ <number id="max-rpm" type="slider" arg="--max-rpm %"
_label="Max RPM" _low-label="100" _high-label="2000"
low="100" high="2000" default="900"/>
- <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="wire" _label="Wireframe" arg-set="--wireframe"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</vgroup>
</hgroup>
<screensaver name="pipes" _label="Pipes" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=UsUGENa7jvE"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="10000"
convert="invert"/>
- <number id="cycles" type="slider" arg="-cycles %"
+ <number id="cycles" type="slider" arg="--cycles %"
_label="Number of pipes" _low-label="One" _high-label="A hundred"
low="1" high="100" default="5"/>
- <number id="size" type="slider" arg="-size %"
+ <number id="size" type="slider" arg="--size %"
_label="Pipe length" _low-label="Short" _high-label="Long"
low="0" high="3000" default="500"/>
- <number id="factory" type="slider" arg="-factory %"
+ <number id="factory" type="slider" arg="--factory %"
_label="Gadgetry" _low-label="None" _high-label="Lots"
low="0" high="10" default="2"/>
<hgroup>
- <boolean id="fisheye" _label="Fisheye lens" arg-unset="-no-fisheye"/>
- <boolean id="tight" _label="Allow tight turns" arg-set="-tightturns"/>
+ <boolean id="fisheye" _label="Fisheye lens" arg-unset="--no-fisheye"/>
+ <boolean id="tight" _label="Allow tight turns" arg-set="--tightturns"/>
<select id="style">
- <option id="curves" _label="Curved pipes" arg-set="-count 3"/>
- <option id="balls" _label="Ball joints" arg-set="-count 1"/>
+ <option id="curves" _label="Curved pipes" arg-set="--count 3"/>
+ <option id="balls" _label="Ball joints" arg-set="--count 1"/>
<option id="fit" _label="Bolted fittings"/>
- <option id="random" _label="Random style" arg-set="-count 0"/>
+ <option id="random" _label="Random style" arg-set="--count 0"/>
</select>
</hgroup>
<hgroup>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
- <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
+ <boolean id="wire" _label="Wireframe" arg-set="--wireframe"/>
</hgroup>
<xscreensaver-updater />
<screensaver name="polyhedra" _label="Polyhedra" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=gYb-3EErLJE"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="30000"
convert="invert"/>
- <number id="speed" type="slider" arg="-speed %"
+ <number id="speed" type="slider" arg="--speed %"
_label="Speed" _low-label="Slow" _high-label="Fast"
low="0.01" high="5.0" default="1.0"
convert="ratio"/>
- <number id="duration" type="slider" arg="-duration %"
+ <number id="duration" type="slider" arg="--duration %"
_label="Duration" _low-label="1 second" _high-label="30 seconds"
low="1" high="30" default="12"/>
<select id="object">
<option id="random" _label="Display random polyhedron"/>
-<option _label="Pentagonal prism" arg-set="-which pentagonal_prism"/>
-<option _label="Pentagonal dipyramid" arg-set="-which pentagonal_dipyramid"/>
-<option _label="Pentagonal antiprism" arg-set="-which pentagonal_antiprism"/>
-<option _label="Pentagonal deltohedron" arg-set="-which pentagonal_deltohedron"/>
-<option _label="Pentagrammic prism" arg-set="-which pentagrammic_prism"/>
-<option _label="Pentagrammic dipyramid" arg-set="-which pentagrammic_dipyramid"/>
-<option _label="Pentagrammic antiprism" arg-set="-which pentagrammic_antiprism"/>
-<option _label="Pentagrammic deltohedron" arg-set="-which pentagrammic_deltohedron"/>
-<option _label="Pentagrammic crossed antiprism" arg-set="-which pentagrammic_crossed_antiprism"/>
-<option _label="Pentagrammic concave deltohedron" arg-set="-which pentagrammic_concave_deltohedron"/>
-<option _label="Tetrahedron" arg-set="-which tetrahedron"/>
-<option _label="Truncated tetrahedron" arg-set="-which truncated_tetrahedron"/>
-<option _label="Triakistetrahedron" arg-set="-which triakistetrahedron"/>
-<option _label="Octahemioctahedron" arg-set="-which octahemioctahedron"/>
-<option _label="Octahemioctacron" arg-set="-which octahemioctacron"/>
-<option _label="Tetrahemihexahedron" arg-set="-which tetrahemihexahedron"/>
-<option _label="Tetrahemihexacron" arg-set="-which tetrahemihexacron"/>
-<option _label="Octahedron" arg-set="-which octahedron"/>
-<option _label="Cube" arg-set="-which cube"/>
-<option _label="Cuboctahedron" arg-set="-which cuboctahedron"/>
-<option _label="Rhombic dodecahedron" arg-set="-which rhombic_dodecahedron"/>
-<option _label="Truncated octahedron" arg-set="-which truncated_octahedron"/>
-<option _label="Tetrakishexahedron" arg-set="-which tetrakishexahedron"/>
-<option _label="Truncated cube" arg-set="-which truncated_cube"/>
-<option _label="Triakisoctahedron" arg-set="-which triakisoctahedron"/>
-<option _label="Rhombicuboctahedron" arg-set="-which rhombicuboctahedron"/>
-<option _label="Deltoidal icositetrahedron" arg-set="-which deltoidal_icositetrahedron"/>
-<option _label="Truncated cuboctahedron" arg-set="-which truncated_cuboctahedron"/>
-<option _label="Disdyakisdodecahedron" arg-set="-which disdyakisdodecahedron"/>
-<option _label="Snub cube" arg-set="-which snub_cube"/>
-<option _label="Pentagonal icositetrahedron" arg-set="-which pentagonal_icositetrahedron"/>
-<option _label="Small cubicuboctahedron" arg-set="-which small_cubicuboctahedron"/>
-<option _label="Small hexacronic icositetrahedron" arg-set="-which small_hexacronic_icositetrahedron"/>
-<option _label="Great cubicuboctahedron" arg-set="-which great_cubicuboctahedron"/>
-<option _label="Great hexacronic icositetrahedron" arg-set="-which great_hexacronic_icositetrahedron"/>
-<option _label="Cubohemioctahedron" arg-set="-which cubohemioctahedron"/>
-<option _label="Hexahemioctacron" arg-set="-which hexahemioctacron"/>
-<option _label="Cubitruncated cuboctahedron" arg-set="-which cubitruncated_cuboctahedron"/>
-<option _label="Tetradyakishexahedron" arg-set="-which tetradyakishexahedron"/>
-<option _label="Great rhombicuboctahedron" arg-set="-which great_rhombicuboctahedron"/>
-<option _label="Great deltoidal icositetrahedron" arg-set="-which great_deltoidal_icositetrahedron"/>
-<option _label="Small rhombihexahedron" arg-set="-which small_rhombihexahedron"/>
-<option _label="Small rhombihexacron" arg-set="-which small_rhombihexacron"/>
-<option _label="Stellated truncated hexahedron" arg-set="-which stellated_truncated_hexahedron"/>
-<option _label="Great triakisoctahedron" arg-set="-which great_triakisoctahedron"/>
-<option _label="Great truncated cuboctahedron" arg-set="-which great_truncated_cuboctahedron"/>
-<option _label="Great disdyakisdodecahedron" arg-set="-which great_disdyakisdodecahedron"/>
-<option _label="Great rhombihexahedron" arg-set="-which great_rhombihexahedron"/>
-<option _label="Great rhombihexacron" arg-set="-which great_rhombihexacron"/>
-<option _label="Icosahedron" arg-set="-which icosahedron"/>
-<option _label="Dodecahedron" arg-set="-which dodecahedron"/>
-<option _label="Icosidodecahedron" arg-set="-which icosidodecahedron"/>
-<option _label="Rhombic triacontahedron" arg-set="-which rhombic_triacontahedron"/>
-<option _label="Truncated icosahedron" arg-set="-which truncated_icosahedron"/>
-<option _label="Pentakisdodecahedron" arg-set="-which pentakisdodecahedron"/>
-<option _label="Truncated dodecahedron" arg-set="-which truncated_dodecahedron"/>
-<option _label="Triakisicosahedron" arg-set="-which triakisicosahedron"/>
-<option _label="Rhombicosidodecahedron" arg-set="-which rhombicosidodecahedron"/>
-<option _label="Deltoidal hexecontahedron" arg-set="-which deltoidal_hexecontahedron"/>
-<option _label="Truncated icosidodecahedron" arg-set="-which truncated_icosidodecahedron"/>
-<option _label="Disdyakistriacontahedron" arg-set="-which disdyakistriacontahedron"/>
-<option _label="Snub dodecahedron" arg-set="-which snub_dodecahedron"/>
-<option _label="Pentagonal hexecontahedron" arg-set="-which pentagonal_hexecontahedron"/>
-<option _label="Small ditrigonal icosidodecahedron" arg-set="-which small_ditrigonal_icosidodecahedron"/>
-<option _label="Small triambic icosahedron" arg-set="-which small_triambic_icosahedron"/>
-<option _label="Small icosicosidodecahedron" arg-set="-which small_icosicosidodecahedron"/>
-<option _label="Small icosacronic hexecontahedron" arg-set="-which small_icosacronic_hexecontahedron"/>
-<option _label="Small snub icosicosidodecahedron" arg-set="-which small_snub_icosicosidodecahedron"/>
-<option _label="Small hexagonal hexecontahedron" arg-set="-which small_hexagonal_hexecontahedron"/>
-<option _label="Small dodecicosidodecahedron" arg-set="-which small_dodecicosidodecahedron"/>
-<option _label="Small dodecacronic hexecontahedron" arg-set="-which small_dodecacronic_hexecontahedron"/>
-<option _label="Small stellated dodecahedron" arg-set="-which small_stellated_dodecahedron"/>
-<option _label="Great dodecahedron" arg-set="-which great_dodecahedron"/>
-<option _label="Great dodecadodecahedron" arg-set="-which great_dodecadodecahedron"/>
-<option _label="Medial rhombic triacontahedron" arg-set="-which medial_rhombic_triacontahedron"/>
-<option _label="Truncated great dodecahedron" arg-set="-which truncated_great_dodecahedron"/>
-<option _label="Small stellapentakisdodecahedron" arg-set="-which small_stellapentakisdodecahedron"/>
-<option _label="Rhombidodecadodecahedron" arg-set="-which rhombidodecadodecahedron"/>
-<option _label="Medial deltoidal hexecontahedron" arg-set="-which medial_deltoidal_hexecontahedron"/>
-<option _label="Small rhombidodecahedron" arg-set="-which small_rhombidodecahedron"/>
-<option _label="Small rhombidodecacron" arg-set="-which small_rhombidodecacron"/>
-<option _label="Snub dodecadodecahedron" arg-set="-which snub_dodecadodecahedron"/>
-<option _label="Medial pentagonal hexecontahedron" arg-set="-which medial_pentagonal_hexecontahedron"/>
-<option _label="Ditrigonal dodecadodecahedron" arg-set="-which ditrigonal_dodecadodecahedron"/>
-<option _label="Medial triambic icosahedron" arg-set="-which medial_triambic_icosahedron"/>
-<option _label="Great ditrigonal dodecicosidodecahedron" arg-set="-which great_ditrigonal_dodecicosidodecahedron"/>
-<option _label="Great ditrigonal dodecacronic hexecontahedron" arg-set="-which great_ditrigonal_dodecacronic_hexecontahedron"/>
-<option _label="Small ditrigonal dodecicosidodecahedron" arg-set="-which small_ditrigonal_dodecicosidodecahedron"/>
-<option _label="Small ditrigonal dodecacronic hexecontahedron" arg-set="-which small_ditrigonal_dodecacronic_hexecontahedron"/>
-<option _label="Icosidodecadodecahedron" arg-set="-which icosidodecadodecahedron"/>
-<option _label="Medial icosacronic hexecontahedron" arg-set="-which medial_icosacronic_hexecontahedron"/>
-<option _label="Icositruncated dodecadodecahedron" arg-set="-which icositruncated_dodecadodecahedron"/>
-<option _label="Tridyakisicosahedron" arg-set="-which tridyakisicosahedron"/>
-<option _label="Snub icosidodecadodecahedron" arg-set="-which snub_icosidodecadodecahedron"/>
-<option _label="Medial hexagonal hexecontahedron" arg-set="-which medial_hexagonal_hexecontahedron"/>
-<option _label="Great ditrigonal icosidodecahedron" arg-set="-which great_ditrigonal_icosidodecahedron"/>
-<option _label="Great triambic icosahedron" arg-set="-which great_triambic_icosahedron"/>
-<option _label="Great icosicosidodecahedron" arg-set="-which great_icosicosidodecahedron"/>
-<option _label="Great icosacronic hexecontahedron" arg-set="-which great_icosacronic_hexecontahedron"/>
-<option _label="Small icosihemidodecahedron" arg-set="-which small_icosihemidodecahedron"/>
-<option _label="Small icosihemidodecacron" arg-set="-which small_icosihemidodecacron"/>
-<option _label="Small dodecicosahedron" arg-set="-which small_dodecicosahedron"/>
-<option _label="Small dodecicosacron" arg-set="-which small_dodecicosacron"/>
-<option _label="Small dodecahemidodecahedron" arg-set="-which small_dodecahemidodecahedron"/>
-<option _label="Small dodecahemidodecacron" arg-set="-which small_dodecahemidodecacron"/>
-<option _label="Great stellated dodecahedron" arg-set="-which great_stellated_dodecahedron"/>
-<option _label="Great icosahedron" arg-set="-which great_icosahedron"/>
-<option _label="Great icosidodecahedron" arg-set="-which great_icosidodecahedron"/>
-<option _label="Great rhombic triacontahedron" arg-set="-which great_rhombic_triacontahedron"/>
-<option _label="Great truncated icosahedron" arg-set="-which great_truncated_icosahedron"/>
-<option _label="Great stellapentakisdodecahedron" arg-set="-which great_stellapentakisdodecahedron"/>
-<option _label="Rhombicosahedron" arg-set="-which rhombicosahedron"/>
-<option _label="Rhombicosacron" arg-set="-which rhombicosacron"/>
-<option _label="Great snub icosidodecahedron" arg-set="-which great_snub_icosidodecahedron"/>
-<option _label="Great pentagonal hexecontahedron" arg-set="-which great_pentagonal_hexecontahedron"/>
-<option _label="Small stellated truncated dodecahedron" arg-set="-which small_stellated_truncated_dodecahedron"/>
-<option _label="Great pentakisdodecahedron" arg-set="-which great_pentakisdodecahedron"/>
-<option _label="Truncated dodecadodecahedron" arg-set="-which truncated_dodecadodecahedron"/>
-<option _label="Medial disdyakistriacontahedron" arg-set="-which medial_disdyakistriacontahedron"/>
-<option _label="Inverted snub dodecadodecahedron" arg-set="-which inverted_snub_dodecadodecahedron"/>
-<option _label="Medial inverted pentagonal hexecontahedron" arg-set="-which medial_inverted_pentagonal_hexecontahedron"/>
-<option _label="Great dodecicosidodecahedron" arg-set="-which great_dodecicosidodecahedron"/>
-<option _label="Great dodecacronic hexecontahedron" arg-set="-which great_dodecacronic_hexecontahedron"/>
-<option _label="Small dodecahemicosahedron" arg-set="-which small_dodecahemicosahedron"/>
-<option _label="Small dodecahemicosacron" arg-set="-which small_dodecahemicosacron"/>
-<option _label="Great dodecicosahedron" arg-set="-which great_dodecicosahedron"/>
-<option _label="Great dodecicosacron" arg-set="-which great_dodecicosacron"/>
-<option _label="Great snub dodecicosidodecahedron" arg-set="-which great_snub_dodecicosidodecahedron"/>
-<option _label="Great hexagonal hexecontahedron" arg-set="-which great_hexagonal_hexecontahedron"/>
-<option _label="Great dodecahemicosahedron" arg-set="-which great_dodecahemicosahedron"/>
-<option _label="Great dodecahemicosacron" arg-set="-which great_dodecahemicosacron"/>
-<option _label="Great stellated truncated dodecahedron" arg-set="-which great_stellated_truncated_dodecahedron"/>
-<option _label="Great triakisicosahedron" arg-set="-which great_triakisicosahedron"/>
-<option _label="Great rhombicosidodecahedron" arg-set="-which great_rhombicosidodecahedron"/>
-<option _label="Great deltoidal hexecontahedron" arg-set="-which great_deltoidal_hexecontahedron"/>
-<option _label="Great truncated icosidodecahedron" arg-set="-which great_truncated_icosidodecahedron"/>
-<option _label="Great disdyakistriacontahedron" arg-set="-which great_disdyakistriacontahedron"/>
-<option _label="Great inverted snub icosidodecahedron" arg-set="-which great_inverted_snub_icosidodecahedron"/>
-<option _label="Great inverted pentagonal hexecontahedron" arg-set="-which great_inverted_pentagonal_hexecontahedron"/>
-<option _label="Great dodecahemidodecahedron" arg-set="-which great_dodecahemidodecahedron"/>
-<option _label="Great dodecahemidodecacron" arg-set="-which great_dodecahemidodecacron"/>
-<option _label="Great icosihemidodecahedron" arg-set="-which great_icosihemidodecahedron"/>
-<option _label="Great icosihemidodecacron" arg-set="-which great_icosihemidodecacron"/>
-<option _label="Small retrosnub icosicosidodecahedron" arg-set="-which small_retrosnub_icosicosidodecahedron"/>
-<option _label="Small hexagrammic hexecontahedron" arg-set="-which small_hexagrammic_hexecontahedron"/>
-<option _label="Great rhombidodecahedron" arg-set="-which great_rhombidodecahedron"/>
-<option _label="Great rhombidodecacron" arg-set="-which great_rhombidodecacron"/>
-<option _label="Great retrosnub icosidodecahedron" arg-set="-which great_retrosnub_icosidodecahedron"/>
-<option _label="Great pentagrammic hexecontahedron" arg-set="-which great_pentagrammic_hexecontahedron"/>
-<option _label="Great dirhombicosidodecahedron" arg-set="-which great_dirhombicosidodecahedron"/>
-<option _label="Great dirhombicosidodecacron" arg-set="-which great_dirhombicosidodecacron"/>
-<option _label="Utah teapotahedron" arg-set="-which utah_teapotahedron"/>
+<option _label="Pentagonal prism" arg-set="--which pentagonal_prism"/>
+<option _label="Pentagonal dipyramid" arg-set="--which pentagonal_dipyramid"/>
+<option _label="Pentagonal antiprism" arg-set="--which pentagonal_antiprism"/>
+<option _label="Pentagonal deltohedron" arg-set="--which pentagonal_deltohedron"/>
+<option _label="Pentagrammic prism" arg-set="--which pentagrammic_prism"/>
+<option _label="Pentagrammic dipyramid" arg-set="--which pentagrammic_dipyramid"/>
+<option _label="Pentagrammic antiprism" arg-set="--which pentagrammic_antiprism"/>
+<option _label="Pentagrammic deltohedron" arg-set="--which pentagrammic_deltohedron"/>
+<option _label="Pentagrammic crossed antiprism" arg-set="--which pentagrammic_crossed_antiprism"/>
+<option _label="Pentagrammic concave deltohedron" arg-set="--which pentagrammic_concave_deltohedron"/>
+<option _label="Tetrahedron" arg-set="--which tetrahedron"/>
+<option _label="Truncated tetrahedron" arg-set="--which truncated_tetrahedron"/>
+<option _label="Triakistetrahedron" arg-set="--which triakistetrahedron"/>
+<option _label="Octahemioctahedron" arg-set="--which octahemioctahedron"/>
+<option _label="Octahemioctacron" arg-set="--which octahemioctacron"/>
+<option _label="Tetrahemihexahedron" arg-set="--which tetrahemihexahedron"/>
+<option _label="Tetrahemihexacron" arg-set="--which tetrahemihexacron"/>
+<option _label="Octahedron" arg-set="--which octahedron"/>
+<option _label="Cube" arg-set="--which cube"/>
+<option _label="Cuboctahedron" arg-set="--which cuboctahedron"/>
+<option _label="Rhombic dodecahedron" arg-set="--which rhombic_dodecahedron"/>
+<option _label="Truncated octahedron" arg-set="--which truncated_octahedron"/>
+<option _label="Tetrakishexahedron" arg-set="--which tetrakishexahedron"/>
+<option _label="Truncated cube" arg-set="--which truncated_cube"/>
+<option _label="Triakisoctahedron" arg-set="--which triakisoctahedron"/>
+<option _label="Rhombicuboctahedron" arg-set="--which rhombicuboctahedron"/>
+<option _label="Deltoidal icositetrahedron" arg-set="--which deltoidal_icositetrahedron"/>
+<option _label="Truncated cuboctahedron" arg-set="--which truncated_cuboctahedron"/>
+<option _label="Disdyakisdodecahedron" arg-set="--which disdyakisdodecahedron"/>
+<option _label="Snub cube" arg-set="--which snub_cube"/>
+<option _label="Pentagonal icositetrahedron" arg-set="--which pentagonal_icositetrahedron"/>
+<option _label="Small cubicuboctahedron" arg-set="--which small_cubicuboctahedron"/>
+<option _label="Small hexacronic icositetrahedron" arg-set="--which small_hexacronic_icositetrahedron"/>
+<option _label="Great cubicuboctahedron" arg-set="--which great_cubicuboctahedron"/>
+<option _label="Great hexacronic icositetrahedron" arg-set="--which great_hexacronic_icositetrahedron"/>
+<option _label="Cubohemioctahedron" arg-set="--which cubohemioctahedron"/>
+<option _label="Hexahemioctacron" arg-set="--which hexahemioctacron"/>
+<option _label="Cubitruncated cuboctahedron" arg-set="--which cubitruncated_cuboctahedron"/>
+<option _label="Tetradyakishexahedron" arg-set="--which tetradyakishexahedron"/>
+<option _label="Great rhombicuboctahedron" arg-set="--which great_rhombicuboctahedron"/>
+<option _label="Great deltoidal icositetrahedron" arg-set="--which great_deltoidal_icositetrahedron"/>
+<option _label="Small rhombihexahedron" arg-set="--which small_rhombihexahedron"/>
+<option _label="Small rhombihexacron" arg-set="--which small_rhombihexacron"/>
+<option _label="Stellated truncated hexahedron" arg-set="--which stellated_truncated_hexahedron"/>
+<option _label="Great triakisoctahedron" arg-set="--which great_triakisoctahedron"/>
+<option _label="Great truncated cuboctahedron" arg-set="--which great_truncated_cuboctahedron"/>
+<option _label="Great disdyakisdodecahedron" arg-set="--which great_disdyakisdodecahedron"/>
+<option _label="Great rhombihexahedron" arg-set="--which great_rhombihexahedron"/>
+<option _label="Great rhombihexacron" arg-set="--which great_rhombihexacron"/>
+<option _label="Icosahedron" arg-set="--which icosahedron"/>
+<option _label="Dodecahedron" arg-set="--which dodecahedron"/>
+<option _label="Icosidodecahedron" arg-set="--which icosidodecahedron"/>
+<option _label="Rhombic triacontahedron" arg-set="--which rhombic_triacontahedron"/>
+<option _label="Truncated icosahedron" arg-set="--which truncated_icosahedron"/>
+<option _label="Pentakisdodecahedron" arg-set="--which pentakisdodecahedron"/>
+<option _label="Truncated dodecahedron" arg-set="--which truncated_dodecahedron"/>
+<option _label="Triakisicosahedron" arg-set="--which triakisicosahedron"/>
+<option _label="Rhombicosidodecahedron" arg-set="--which rhombicosidodecahedron"/>
+<option _label="Deltoidal hexecontahedron" arg-set="--which deltoidal_hexecontahedron"/>
+<option _label="Truncated icosidodecahedron" arg-set="--which truncated_icosidodecahedron"/>
+<option _label="Disdyakistriacontahedron" arg-set="--which disdyakistriacontahedron"/>
+<option _label="Snub dodecahedron" arg-set="--which snub_dodecahedron"/>
+<option _label="Pentagonal hexecontahedron" arg-set="--which pentagonal_hexecontahedron"/>
+<option _label="Small ditrigonal icosidodecahedron" arg-set="--which small_ditrigonal_icosidodecahedron"/>
+<option _label="Small triambic icosahedron" arg-set="--which small_triambic_icosahedron"/>
+<option _label="Small icosicosidodecahedron" arg-set="--which small_icosicosidodecahedron"/>
+<option _label="Small icosacronic hexecontahedron" arg-set="--which small_icosacronic_hexecontahedron"/>
+<option _label="Small snub icosicosidodecahedron" arg-set="--which small_snub_icosicosidodecahedron"/>
+<option _label="Small hexagonal hexecontahedron" arg-set="--which small_hexagonal_hexecontahedron"/>
+<option _label="Small dodecicosidodecahedron" arg-set="--which small_dodecicosidodecahedron"/>
+<option _label="Small dodecacronic hexecontahedron" arg-set="--which small_dodecacronic_hexecontahedron"/>
+<option _label="Small stellated dodecahedron" arg-set="--which small_stellated_dodecahedron"/>
+<option _label="Great dodecahedron" arg-set="--which great_dodecahedron"/>
+<option _label="Great dodecadodecahedron" arg-set="--which great_dodecadodecahedron"/>
+<option _label="Medial rhombic triacontahedron" arg-set="--which medial_rhombic_triacontahedron"/>
+<option _label="Truncated great dodecahedron" arg-set="--which truncated_great_dodecahedron"/>
+<option _label="Small stellapentakisdodecahedron" arg-set="--which small_stellapentakisdodecahedron"/>
+<option _label="Rhombidodecadodecahedron" arg-set="--which rhombidodecadodecahedron"/>
+<option _label="Medial deltoidal hexecontahedron" arg-set="--which medial_deltoidal_hexecontahedron"/>
+<option _label="Small rhombidodecahedron" arg-set="--which small_rhombidodecahedron"/>
+<option _label="Small rhombidodecacron" arg-set="--which small_rhombidodecacron"/>
+<option _label="Snub dodecadodecahedron" arg-set="--which snub_dodecadodecahedron"/>
+<option _label="Medial pentagonal hexecontahedron" arg-set="--which medial_pentagonal_hexecontahedron"/>
+<option _label="Ditrigonal dodecadodecahedron" arg-set="--which ditrigonal_dodecadodecahedron"/>
+<option _label="Medial triambic icosahedron" arg-set="--which medial_triambic_icosahedron"/>
+<option _label="Great ditrigonal dodecicosidodecahedron" arg-set="--which great_ditrigonal_dodecicosidodecahedron"/>
+<option _label="Great ditrigonal dodecacronic hexecontahedron" arg-set="--which great_ditrigonal_dodecacronic_hexecontahedron"/>
+<option _label="Small ditrigonal dodecicosidodecahedron" arg-set="--which small_ditrigonal_dodecicosidodecahedron"/>
+<option _label="Small ditrigonal dodecacronic hexecontahedron" arg-set="--which small_ditrigonal_dodecacronic_hexecontahedron"/>
+<option _label="Icosidodecadodecahedron" arg-set="--which icosidodecadodecahedron"/>
+<option _label="Medial icosacronic hexecontahedron" arg-set="--which medial_icosacronic_hexecontahedron"/>
+<option _label="Icositruncated dodecadodecahedron" arg-set="--which icositruncated_dodecadodecahedron"/>
+<option _label="Tridyakisicosahedron" arg-set="--which tridyakisicosahedron"/>
+<option _label="Snub icosidodecadodecahedron" arg-set="--which snub_icosidodecadodecahedron"/>
+<option _label="Medial hexagonal hexecontahedron" arg-set="--which medial_hexagonal_hexecontahedron"/>
+<option _label="Great ditrigonal icosidodecahedron" arg-set="--which great_ditrigonal_icosidodecahedron"/>
+<option _label="Great triambic icosahedron" arg-set="--which great_triambic_icosahedron"/>
+<option _label="Great icosicosidodecahedron" arg-set="--which great_icosicosidodecahedron"/>
+<option _label="Great icosacronic hexecontahedron" arg-set="--which great_icosacronic_hexecontahedron"/>
+<option _label="Small icosihemidodecahedron" arg-set="--which small_icosihemidodecahedron"/>
+<option _label="Small icosihemidodecacron" arg-set="--which small_icosihemidodecacron"/>
+<option _label="Small dodecicosahedron" arg-set="--which small_dodecicosahedron"/>
+<option _label="Small dodecicosacron" arg-set="--which small_dodecicosacron"/>
+<option _label="Small dodecahemidodecahedron" arg-set="--which small_dodecahemidodecahedron"/>
+<option _label="Small dodecahemidodecacron" arg-set="--which small_dodecahemidodecacron"/>
+<option _label="Great stellated dodecahedron" arg-set="--which great_stellated_dodecahedron"/>
+<option _label="Great icosahedron" arg-set="--which great_icosahedron"/>
+<option _label="Great icosidodecahedron" arg-set="--which great_icosidodecahedron"/>
+<option _label="Great rhombic triacontahedron" arg-set="--which great_rhombic_triacontahedron"/>
+<option _label="Great truncated icosahedron" arg-set="--which great_truncated_icosahedron"/>
+<option _label="Great stellapentakisdodecahedron" arg-set="--which great_stellapentakisdodecahedron"/>
+<option _label="Rhombicosahedron" arg-set="--which rhombicosahedron"/>
+<option _label="Rhombicosacron" arg-set="--which rhombicosacron"/>
+<option _label="Great snub icosidodecahedron" arg-set="--which great_snub_icosidodecahedron"/>
+<option _label="Great pentagonal hexecontahedron" arg-set="--which great_pentagonal_hexecontahedron"/>
+<option _label="Small stellated truncated dodecahedron" arg-set="--which small_stellated_truncated_dodecahedron"/>
+<option _label="Great pentakisdodecahedron" arg-set="--which great_pentakisdodecahedron"/>
+<option _label="Truncated dodecadodecahedron" arg-set="--which truncated_dodecadodecahedron"/>
+<option _label="Medial disdyakistriacontahedron" arg-set="--which medial_disdyakistriacontahedron"/>
+<option _label="Inverted snub dodecadodecahedron" arg-set="--which inverted_snub_dodecadodecahedron"/>
+<option _label="Medial inverted pentagonal hexecontahedron" arg-set="--which medial_inverted_pentagonal_hexecontahedron"/>
+<option _label="Great dodecicosidodecahedron" arg-set="--which great_dodecicosidodecahedron"/>
+<option _label="Great dodecacronic hexecontahedron" arg-set="--which great_dodecacronic_hexecontahedron"/>
+<option _label="Small dodecahemicosahedron" arg-set="--which small_dodecahemicosahedron"/>
+<option _label="Small dodecahemicosacron" arg-set="--which small_dodecahemicosacron"/>
+<option _label="Great dodecicosahedron" arg-set="--which great_dodecicosahedron"/>
+<option _label="Great dodecicosacron" arg-set="--which great_dodecicosacron"/>
+<option _label="Great snub dodecicosidodecahedron" arg-set="--which great_snub_dodecicosidodecahedron"/>
+<option _label="Great hexagonal hexecontahedron" arg-set="--which great_hexagonal_hexecontahedron"/>
+<option _label="Great dodecahemicosahedron" arg-set="--which great_dodecahemicosahedron"/>
+<option _label="Great dodecahemicosacron" arg-set="--which great_dodecahemicosacron"/>
+<option _label="Great stellated truncated dodecahedron" arg-set="--which great_stellated_truncated_dodecahedron"/>
+<option _label="Great triakisicosahedron" arg-set="--which great_triakisicosahedron"/>
+<option _label="Great rhombicosidodecahedron" arg-set="--which great_rhombicosidodecahedron"/>
+<option _label="Great deltoidal hexecontahedron" arg-set="--which great_deltoidal_hexecontahedron"/>
+<option _label="Great truncated icosidodecahedron" arg-set="--which great_truncated_icosidodecahedron"/>
+<option _label="Great disdyakistriacontahedron" arg-set="--which great_disdyakistriacontahedron"/>
+<option _label="Great inverted snub icosidodecahedron" arg-set="--which great_inverted_snub_icosidodecahedron"/>
+<option _label="Great inverted pentagonal hexecontahedron" arg-set="--which great_inverted_pentagonal_hexecontahedron"/>
+<option _label="Great dodecahemidodecahedron" arg-set="--which great_dodecahemidodecahedron"/>
+<option _label="Great dodecahemidodecacron" arg-set="--which great_dodecahemidodecacron"/>
+<option _label="Great icosihemidodecahedron" arg-set="--which great_icosihemidodecahedron"/>
+<option _label="Great icosihemidodecacron" arg-set="--which great_icosihemidodecacron"/>
+<option _label="Small retrosnub icosicosidodecahedron" arg-set="--which small_retrosnub_icosicosidodecahedron"/>
+<option _label="Small hexagrammic hexecontahedron" arg-set="--which small_hexagrammic_hexecontahedron"/>
+<option _label="Great rhombidodecahedron" arg-set="--which great_rhombidodecahedron"/>
+<option _label="Great rhombidodecacron" arg-set="--which great_rhombidodecacron"/>
+<option _label="Great retrosnub icosidodecahedron" arg-set="--which great_retrosnub_icosidodecahedron"/>
+<option _label="Great pentagrammic hexecontahedron" arg-set="--which great_pentagrammic_hexecontahedron"/>
+<option _label="Great dirhombicosidodecahedron" arg-set="--which great_dirhombicosidodecahedron"/>
+<option _label="Great dirhombicosidodecacron" arg-set="--which great_dirhombicosidodecacron"/>
+<option _label="Utah teapotahedron" arg-set="--which utah_teapotahedron"/>
</select>
<hgroup>
- <boolean id="spin" _label="Spin" arg-unset="-no-spin"/>
- <boolean id="wander" _label="Wander" arg-unset="-no-wander"/>
- <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
+ <boolean id="spin" _label="Spin" arg-unset="--no-spin"/>
+ <boolean id="wander" _label="Wander" arg-unset="--no-wander"/>
+ <boolean id="wire" _label="Wireframe" arg-set="--wireframe"/>
</hgroup>
<hgroup>
- <boolean id="titles" _label="Show description" arg-unset="-no-titles"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="titles" _label="Show description" arg-unset="--no-titles"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</hgroup>
<xscreensaver-updater />
<screensaver name="polyominoes" _label="Polyominoes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=6j2H2gL8cws"/>
- <boolean id="identical" _label="Identical pieces" arg-set="-identical"/>
+ <boolean id="identical" _label="Identical pieces" arg-set="--identical"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="10000"
convert="invert"/>
- <number id="cycles" type="slider" arg="-cycles %"
+ <number id="cycles" type="slider" arg="--cycles %"
_label="Duration" _low-label="Short" _high-label="Long"
low="500" high="5000" default="2000"/>
- <number id="ncolors" type="slider" arg="-ncolors %"
+ <number id="ncolors" type="slider" arg="--ncolors %"
_label="Number of colors" _low-label="Two" _high-label="Many"
low="2" high="255" default="64"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="polytopes" _label="Polytopes" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=MKZQ5Q7QINM"/>
<vgroup>
<select id="display-mode">
<option id="wire" _label="Wireframe mesh"
- arg-set="-mode wireframe"/>
+ arg-set="--mode wireframe"/>
<option id="surface" _label="Solid surface"
- arg-set="-mode surface"/>
+ arg-set="--mode surface"/>
<option id="transparent" _label="Transparent surface"/>
</select>
<select id="polytope">
<option id="random" _label="Random object"/>
<option id="cell-5" _label="5-cell (hyper-tetrahedron)"
- arg-set="-polytope 5-cell"/>
+ arg-set="--polytope 5-cell"/>
<option id="cell-8" _label="8-cell (hypercube / tesseract)"
- arg-set="-polytope 8-cell"/>
+ arg-set="--polytope 8-cell"/>
<option id="cell-16" _label="16-cell (hyper-octahedron)"
- arg-set="-polytope 16-cell"/>
+ arg-set="--polytope 16-cell"/>
<option id="cell-24" _label="24-cell"
- arg-set="-polytope 24-cell"/>
+ arg-set="--polytope 24-cell"/>
<option id="cell-120" _label="120-cell"
- arg-set="-polytope 120-cell"/>
+ arg-set="--polytope 120-cell"/>
<option id="cell-600" _label="600-cell"
- arg-set="-polytope 600-cell"/>
+ arg-set="--polytope 600-cell"/>
</select>
<select id="colors">
- <option id="single" _label="Single color" arg-set="-single-color"/>
+ <option id="single" _label="Single color" arg-set="--single-color"/>
<option id="depth" _label="Colors By 4D Depth"/>
</select>
<select id="projection3d">
<option id="perspective-3d" _label="Perspective 3D"/>
<option id="orthographic-3d" _label="Orthographic 3D"
- arg-set="-orthographic-3d"/>
+ arg-set="--orthographic-3d"/>
</select>
<select id="projection4d">
<option id="perspective-4d" _label="Perspective 4D"/>
<option id="orthographic-4d" _label="Orthographic 4D"
- arg-set="-orthographic-4d"/>
+ arg-set="--orthographic-4d"/>
</select>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</vgroup>
<vgroup>
- <number id="speed-wx" type="slider" arg="-speed-wx %"
+ <number id="speed-wx" type="slider" arg="--speed-wx %"
_label="WX rotation speed"
_low-label="-4.0" _high-label="4.0"
low="-4.0" high="4.0" default="1.1"/>
- <number id="speed-wy" type="slider" arg="-speed-wy %"
+ <number id="speed-wy" type="slider" arg="--speed-wy %"
_label="WY rotation speed"
_low-label="-4.0" _high-label="4.0"
low="-4.0" high="4.0" default="1.3"/>
- <number id="speed-wz" type="slider" arg="-speed-wz %"
+ <number id="speed-wz" type="slider" arg="--speed-wz %"
_label="WZ rotation speed"
_low-label="-4.0" _high-label="4.0"
low="-4.0" high="4.0" default="1.5"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="25000"
convert="invert"/>
</vgroup>
<vgroup>
- <number id="speed-xy" type="slider" arg="-speed-xy %"
+ <number id="speed-xy" type="slider" arg="--speed-xy %"
_label="XY rotation speed"
_low-label="-4.0" _high-label="4.0"
low="-4.0" high="4.0" default="1.7"/>
- <number id="speed-xz" type="slider" arg="-speed-xz %"
+ <number id="speed-xz" type="slider" arg="--speed-xz %"
_label="XZ rotation speed"
_low-label="-4.0" _high-label="4.0"
low="-4.0" high="4.0" default="1.9"/>
- <number id="speed-yz" type="slider" arg="-speed-yz %"
+ <number id="speed-yz" type="slider" arg="--speed-yz %"
_label="YZ rotation speed"
_low-label="-4.0" _high-label="4.0"
low="-4.0" high="4.0" default="2.1"/>
<screensaver name="pong" _label="Pong">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=2jPmisDwwi0"/>
<hgroup>
<vgroup>
- <number id="speed" type="slider" arg="-speed %"
+ <number id="speed" type="slider" arg="--speed %"
_label="Game speed" _low-label="Slow" _high-label="Fast"
low="1" high="20" default="6"/>
- <number id="noise" type="slider" arg="-noise %"
+ <number id="noise" type="slider" arg="--noise %"
_label="Noise" _low-label="Crisp" _high-label="Noisy"
low="0.00" high="5.00" default="0.04"/>
<hgroup>
- <boolean id="clock" _label="Clock mode" arg-set="-clock"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="clock" _label="Clock mode" arg-set="--clock"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</hgroup>
</vgroup>
<vgroup>
- <number id="tvbrightness" type="slider" arg="-tv-brightness %"
+ <number id="tvbrightness" type="slider" arg="--tv-brightness %"
_label="Brightness Knob" _low-label="Low" _high-label="High"
low="-75.0" high="100.0" default="3.0"/>
- <number id="tvcontrast" type="slider" arg="-tv-contrast %"
+ <number id="tvcontrast" type="slider" arg="--tv-contrast %"
_label="Contrast Knob" _low-label="Low" _high-label="High"
low="0" high="500" default="150"/>
</vgroup>
<screensaver name="popsquares" _label="Pop Squares">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=99Aweq7Nypc"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="25000"
convert="invert"/>
- <number id="subdivision" type="spinbutton" arg="-subdivision %"
+ <number id="subdivision" type="spinbutton" arg="--subdivision %"
_label="Subdivision"
low="1" high="64" default="5"/>
- <number id="border" type="spinbutton" arg="-border %"
+ <number id="border" type="spinbutton" arg="--border %"
_label="Border"
low="0" high="5" default="1"/>
- <number id="ncolors" type="spinbutton" arg="-ncolors %"
+ <number id="ncolors" type="spinbutton" arg="--ncolors %"
_label="Number of colors" low="1" high="512" default="128"/>
<hgroup>
<select id="bg">
- <option id="lred" _label="Light red" arg-set="-bg #FF0000"/>
- <option id="lyellow" _label="Light yellow" arg-set="-bg #FFFF00"/>
- <option id="lgreen" _label="Light green" arg-set="-bg #00FF00"/>
- <option id="lcyan" _label="Light cyan" arg-set="-bg #00FFFF"/>
+ <option id="lred" _label="Light red" arg-set="--bg #FF0000"/>
+ <option id="lyellow" _label="Light yellow" arg-set="--bg #FFFF00"/>
+ <option id="lgreen" _label="Light green" arg-set="--bg #00FF00"/>
+ <option id="lcyan" _label="Light cyan" arg-set="--bg #00FFFF"/>
<option id="lblue" _label="Light blue"/>
- <option id="lmagenta" _label="Light magenta" arg-set="-bg #FF00FF"/>
+ <option id="lmagenta" _label="Light magenta" arg-set="--bg #FF00FF"/>
</select>
<select id="fg">
- <option id="dred" _label="Dark red" arg-set="-fg #8C0000"/>
- <option id="dyellow" _label="Dark yellow" arg-set="-fg #8C8C00"/>
- <option id="dgreen" _label="Dark green" arg-set="-fg #008C00"/>
- <option id="dcyan" _label="Dark cyan" arg-set="-fg #008C8C"/>
+ <option id="dred" _label="Dark red" arg-set="--fg #8C0000"/>
+ <option id="dyellow" _label="Dark yellow" arg-set="--fg #8C8C00"/>
+ <option id="dgreen" _label="Dark green" arg-set="--fg #008C00"/>
+ <option id="dcyan" _label="Dark cyan" arg-set="--fg #008C8C"/>
<option id="dblue" _label="Dark blue"/>
- <option id="dmagenta" _label="Dark magenta" arg-set="-fg #8C008C"/>
+ <option id="dmagenta" _label="Dark magenta" arg-set="--fg #8C008C"/>
</select>
</hgroup>
- <boolean id="twitch" _label="Twitch" arg-set="-twitch"/>
+ <boolean id="twitch" _label="Twitch" arg-set="--twitch"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="projectiveplane" _label="Projective Plane" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=Zg6ONPUTwUQ"/>
<hgroup>
<select id="display-mode">
<option id="random" _label="Random surface"/>
- <option id="wire" _label="Wireframe mesh" arg-set="-mode wireframe"/>
- <option id="surface" _label="Solid surface" arg-set="-mode surface"/>
- <option id="transparent" _label="Transparent surface" arg-set="-mode transparent"/>
+ <option id="wire" _label="Wireframe mesh" arg-set="--mode wireframe"/>
+ <option id="surface" _label="Solid surface" arg-set="--mode surface"/>
+ <option id="transparent" _label="Transparent surface" arg-set="--mode transparent"/>
</select>
<select id="appearance">
<option id="random" _label="Random pattern"/>
- <option id="solid" _label="Solid object" arg-set="-appearance solid"/>
- <option id="bands" _label="Distance bands" arg-set="-appearance distance-bands"/>
- <option id="bands" _label="Direction bands" arg-set="-appearance direction-bands"/>
+ <option id="solid" _label="Solid object" arg-set="--appearance solid"/>
+ <option id="bands" _label="Distance bands" arg-set="--appearance distance-bands"/>
+ <option id="bands" _label="Direction bands" arg-set="--appearance direction-bands"/>
</select>
<select id="colors">
<option id="random" _label="Random coloration"/>
- <option id="twosided" _label="One-sided" arg-set="-colors one-sided"/>
- <option id="twosided" _label="Two-sided" arg-set="-colors two-sided"/>
- <option id="rainbow" _label="Distance colors" arg-set="-colors distance"/>
- <option id="rainbow" _label="Direction colors" arg-set="-colors direction"/>
- <option id="depth" _label="4d depth colors" arg-set="-colors depth"/>
+ <option id="twosided" _label="One-sided" arg-set="--colors one-sided"/>
+ <option id="twosided" _label="Two-sided" arg-set="--colors two-sided"/>
+ <option id="rainbow" _label="Distance colors" arg-set="--colors distance"/>
+ <option id="rainbow" _label="Direction colors" arg-set="--colors direction"/>
+ <option id="depth" _label="4d depth colors" arg-set="--colors depth"/>
</select>
<boolean id="change-colors" _label="Change colors"
- arg-set="-change-colors"/>
+ arg-set="--change-colors"/>
<select id="projection3d">
<option id="random" _label="Random 3D"/>
- <option id="perspective-3d" _label="Perspective 3D" arg-set="-projection-3d perspective"/>
- <option id="orthographic-3d" _label="Orthographic 3D" arg-set="-projection-3d orthographic"/>
+ <option id="perspective-3d" _label="Perspective 3D" arg-set="--projection-3d perspective"/>
+ <option id="orthographic-3d" _label="Orthographic 3D" arg-set="--projection-3d orthographic"/>
</select>
<select id="projection4d">
<option id="random" _label="Random 4D"/>
- <option id="perspective-4d" _label="Perspective 4D" arg-set="-projection-4d perspective"/>
- <option id="orthographic-4d" _label="Orthographic 4D" arg-set="-projection-4d orthographic"/>
+ <option id="perspective-4d" _label="Perspective 4D" arg-set="--projection-4d perspective"/>
+ <option id="orthographic-4d" _label="Orthographic 4D" arg-set="--projection-4d orthographic"/>
</select>
</hgroup>
<hgroup>
<vgroup>
<hgroup>
- <number id="speed-wx" type="slider" arg="-speed-wx %"
+ <number id="speed-wx" type="slider" arg="--speed-wx %"
_label="WX speed"
_low-label="-4" _high-label="4"
low="-4.0" high="4.0" default="1.1"/>
</hgroup>
<hgroup>
- <number id="speed-wy" type="slider" arg="-speed-wy %"
+ <number id="speed-wy" type="slider" arg="--speed-wy %"
_label="WY speed"
_low-label="-4" _high-label="4"
low="-4.0" high="4.0" default="1.3"/>
</hgroup>
<hgroup>
- <number id="speed-wz" type="slider" arg="-speed-wz %"
+ <number id="speed-wz" type="slider" arg="--speed-wz %"
_label="WZ speed"
_low-label="-4" _high-label="4"
low="-4.0" high="4.0" default="1.5"/>
<vgroup>
<hgroup>
- <number id="speed-xy" type="slider" arg="-speed-xy %"
+ <number id="speed-xy" type="slider" arg="--speed-xy %"
_label="XY speed"
_low-label="-4" _high-label="4"
low="-4.0" high="4.0" default="1.7"/>
</hgroup>
<hgroup>
- <number id="speed-xz" type="slider" arg="-speed-xz %"
+ <number id="speed-xz" type="slider" arg="--speed-xz %"
_label="XZ speed"
_low-label="-4" _high-label="4"
low="-4.0" high="4.0" default="1.9"/>
</hgroup>
<hgroup>
- <number id="speed-yz" type="slider" arg="-speed-yz %"
+ <number id="speed-yz" type="slider" arg="--speed-yz %"
_label="YZ speed"
_low-label="-4" _high-label="4"
low="-4.0" high="4.0" default="2.1"/>
<vgroup>
<hgroup>
- <number id="walk-direction" type="slider" arg="-walk-direction %"
+ <number id="walk-direction" type="slider" arg="--walk-direction %"
_label="Walk dir "
_low-label="-180" _high-label="180"
low="-180.0" high="180.0" default="83.0"/>
</hgroup>
<hgroup>
- <number id="walk-speed" type="slider" arg="-walk-speed %"
+ <number id="walk-speed" type="slider" arg="--walk-speed %"
_label="Walk speed"
_low-label="1" _high-label="100"
low="1.0" high="100.0" default="20.0"/>
</hgroup>
<hgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="25000"
convert="invert"/>
<hgroup>
<select id="view-mode">
<option id="walk" _label="Random motion"/>
- <option id="walk" _label="Walk" arg-set="-view-mode walk"/>
- <option id="turn" _label="Turn" arg-set="-view-mode turn"/>
- <option id="walk-turn" _label="Walk and turn" arg-set="-view-mode walk-turn"/>
+ <option id="walk" _label="Walk" arg-set="--view-mode walk"/>
+ <option id="turn" _label="Turn" arg-set="--view-mode turn"/>
+ <option id="walk-turn" _label="Walk and turn" arg-set="--view-mode walk-turn"/>
</select>
<boolean id="orientation-marks" _label="Show orientation marks"
- arg-set="-orientation-marks"/>
+ arg-set="--orientation-marks"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
</hgroup>
<screensaver name="providence" _label="Providence" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=bnwRPPMopWc"/>
- <number id="speed" type="slider" arg="-delay %"
+ <number id="speed" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="20000"
convert="invert"/>
- <boolean id="eye" _label="Draw eye" arg-unset="-no-eye"/>
+ <boolean id="eye" _label="Draw eye" arg-unset="--no-eye"/>
- <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="wire" _label="Wireframe" arg-set="--wireframe"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="pulsar" _label="Pulsar" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=pR0lpvOAbUo"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="10000"
convert="invert"/>
- <number id="quads" type="spinbutton" arg="-quads %"
+ <number id="quads" type="spinbutton" arg="--quads %"
_label="Quad count" low="1" high="50" default="5"/>
<hgroup>
<vgroup>
- <boolean id="light" _label="Enable lighting" arg-set="-light"/>
- <boolean id="fog" _label="Enable fog" arg-set="-fog"/>
- <boolean id="texture" _label="Enable texturing" arg-set="-texture"/>
- <boolean id="mipmap" _label="Enable texture mipmaps" arg-set="-mipmap"/>
+ <boolean id="light" _label="Enable lighting" arg-set="--light"/>
+ <boolean id="fog" _label="Enable fog" arg-set="--fog"/>
+ <boolean id="texture" _label="Enable texturing" arg-set="--texture"/>
+ <boolean id="mipmap" _label="Enable texture mipmaps" arg-set="--mipmap"/>
</vgroup>
<vgroup>
- <boolean id="no-blend" _label="Enable blending" arg-unset="-no-blend"/>
- <boolean id="antialias" _label="Anti-alias lines" arg-set="-antialias"/>
+ <boolean id="no-blend" _label="Enable blending" arg-unset="--no-blend"/>
+ <boolean id="antialias" _label="Anti-alias lines" arg-set="--antialias"/>
<boolean id="texture_quality" _label="Enable texture filtering"
- arg-set="-texture_quality"/>
- <boolean id="do_depth" _label="Enable depth buffer" arg-set="-do_depth"/>
+ arg-set="--texture_quality"/>
+ <boolean id="do_depth" _label="Enable depth buffer" arg-set="--do_depth"/>
</vgroup>
</hgroup>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="pyro" _label="Pyro">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=JJqVfnMstuw"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Slow" _high-label="Fast"
low="0" high="100000" default="10000"
convert="invert"/>
- <number id="count" type="slider" arg="-count %"
+ <number id="count" type="slider" arg="--count %"
_label="Particle density" _low-label="Sparse" _high-label="Dense"
low="10" high="2000" default="600"/>
- <number id="launch" type="slider" arg="-frequency %"
+ <number id="launch" type="slider" arg="--frequency %"
_label="Launch frequency" _low-label="Seldom" _high-label="Often"
low="1" high="100" default="30"
convert="invert"/>
- <number id="scatter" type="slider" arg="-scatter %"
+ <number id="scatter" type="slider" arg="--scatter %"
_label="Explosive yield" _low-label="Low" _high-label="High"
low="1" high="400" default="100"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="qix" _label="Qix">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=GPqDtJ0vF8U"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="10000"
convert="invert"/>
- <number id="segments" type="slider" arg="-segments %"
+ <number id="segments" type="slider" arg="--segments %"
_label="Segments" _low-label="Few" _high-label="Many"
low="10" high="500" default="250"/>
- <number id="spread" type="slider" arg="-spread %"
+ <number id="spread" type="slider" arg="--spread %"
_label="Density" _low-label="Sparse" _high-label="Dense"
low="1" high="50" default="8"
convert="invert"/>
- <number id="color_contrast" type="slider" arg="-color-shift %"
+ <number id="color_contrast" type="slider" arg="--color-shift %"
_label="Color contrast" _low-label="Low" _high-label="High"
low="0" high="25" default="3"/>
</vgroup>
<vgroup>
<select id="fill">
- <option id="lines" _label="Line segments" arg-set="-hollow"/>
+ <option id="lines" _label="Line segments" arg-set="--hollow"/>
<option id="solid" _label="Solid objects"/>
</select>
<select id="motion">
<option id="linear" _label="Linear motion"/>
- <option id="random" _label="Random motion" arg-set="-random"/>
+ <option id="random" _label="Random motion" arg-set="--random"/>
</select>
<select id="color-mode">
<option id="additive" _label="Additive colors"/>
<option id="subtractive" _label="Subtractive colors"
- arg-set="-subtractive"/>
+ arg-set="--subtractive"/>
</select>
- <number id="count" type="spinbutton" arg="-count %"
+ <number id="count" type="spinbutton" arg="--count %"
_label="Count" low="0" high="20" default="4"/>
- <number id="size" type="spinbutton" arg="-size %"
+ <number id="size" type="spinbutton" arg="--size %"
_label="Max size" low="200" high="1000" default="200"/>
- <number id="poly" type="spinbutton" arg="-poly %"
+ <number id="poly" type="spinbutton" arg="--poly %"
_label="Poly corners" low="2" high="100" default="2"/>
</vgroup>
</hgroup>
<hgroup>
- <boolean id="transparent" _label="Transparent" arg-unset="-non-transparent"/>
- <boolean id="xor" _label="XOR" arg-set="-xor"/>
- <boolean id="gravity" _label="Gravity" arg-set="-gravity"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="transparent" _label="Transparent" arg-unset="--non-transparent"/>
+ <boolean id="xor" _label="XOR" arg-set="--xor"/>
+ <boolean id="gravity" _label="Gravity" arg-set="--gravity"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</hgroup>
<xscreensaver-updater />
<screensaver name="quasicrystal" _label="Quasi-Crystal" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=JsGf65d5TfM"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="30000"
convert="invert"/>
- <number id="speed" type="slider" arg="-speed %"
+ <number id="speed" type="slider" arg="--speed %"
_label="Speed" _low-label="Slow" _high-label="Fast"
low="0.1" high="5.0" default="1.0"
convert="ratio"/>
</vgroup>
<vgroup>
- <number id="count" type="slider" arg="-count %"
+ <number id="count" type="slider" arg="--count %"
_label="Density" _low-label="Low" _high-label="High"
low="7" high="37" default="17"
convert="invert"/>
- <number id="contrast" type="slider" arg="-contrast %"
+ <number id="contrast" type="slider" arg="--contrast %"
_label="Contrast" _low-label="Low" _high-label="High"
low="0" high="100" default="30"/>
</vgroup>
</hgroup>
<hgroup>
- <boolean id="wander" _label="Displacement" arg-unset="-no-wander"/>
- <boolean id="spin" _label="Rotation" arg-unset="-no-spin"/>
- <boolean id="symmetric" _label="Symmetry" arg-unset="-no-symmetry"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="wander" _label="Displacement" arg-unset="--no-wander"/>
+ <boolean id="spin" _label="Rotation" arg-unset="--no-spin"/>
+ <boolean id="symmetric" _label="Symmetry" arg-unset="--no-symmetry"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</hgroup>
<xscreensaver-updater />
<screensaver name="queens" _label="Queens" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=Ssy0ldFDeAs"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="20000"
convert="invert"/>
<hgroup>
- <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="wire" _label="Wireframe" arg-set="--wireframe"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</hgroup>
<xscreensaver-updater />
<screensaver name="raverhoop" _label="Raver Hoop" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=0k2sP_Imb80" />
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="20000"
convert="invert"/>
- <number id="ncolors" type="slider" arg="-ncolors %"
+ <number id="ncolors" type="slider" arg="--ncolors %"
_label="Colors" _low-label="1" _high-label="64"
low="1" high="64" default="12"/>
- <number id="lights" type="slider" arg="-lights %"
+ <number id="lights" type="slider" arg="--lights %"
_label="Lights" _low-label="Sparse" _high-label="Dense"
low="3" high="512" default="200"/>
</vgroup>
<vgroup>
- <number id="speed" type="slider" arg="-speed %"
+ <number id="speed" type="slider" arg="--speed %"
_label="Speed, motion" _low-label="Slow" _high-label="Fast"
low="0.1" high="5.0" default="1.0"
convert="ratio"/>
- <number id="light-speed" type="slider" arg="-light-speed %"
+ <number id="light-speed" type="slider" arg="--light-speed %"
_label="Speed, lights" _low-label="Slow" _high-label="Fast"
low="0.1" high="5.0" default="1.0"
convert="ratio"/>
- <number id="sustain" type="slider" arg="-sustain %"
+ <number id="sustain" type="slider" arg="--sustain %"
_label="Sustain" _low-label="Brief" _high-label="Long"
low="0.1" high="5.0" default="1.0"
convert="ratio"/>
</hgroup>
<hgroup>
- <boolean id="wander" _label="Wander" arg-set="-wander"/>
- <boolean id="spin" _label="Spin" arg-set="-spin"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="wander" _label="Wander" arg-set="--wander"/>
+ <boolean id="spin" _label="Spin" arg-set="--spin"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</hgroup>
<xscreensaver-updater />
<screensaver name="razzledazzle" _label="Razzle Dazzle" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=tV_70VxJFfs" />
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="30000"
convert="invert"/>
- <number id="speed" type="slider" arg="-speed %"
+ <number id="speed" type="slider" arg="--speed %"
_label="Speed" _low-label="Slow" _high-label="Fast"
low="0.1" high="10" default="1.0"
convert="ratio"/>
- <number id="ncolors" type="slider" arg="-ncolors %"
+ <number id="ncolors" type="slider" arg="--ncolors %"
_label="Colors" _low-label="Mono" _high-label="Many"
low="2" high="200" default="2"/>
</vgroup>
<vgroup>
- <number id="density" type="slider" arg="-density %"
+ <number id="density" type="slider" arg="--density %"
_label="Density" _low-label="Sparse" _high-label="Dense"
low="1.0" high="10.0" default="5.0"/>
- <number id="thickness" type="slider" arg="-thickness %"
+ <number id="thickness" type="slider" arg="--thickness %"
_label="Lines" _low-label="Thin" _high-label="Thick"
low="0.05" high="1.0" default="0.1"/>
<select id="object">
- <option _label="Ship Outlines" arg-set="-mode ships"/>
- <option _label="Flat Pattern" arg-set="-mode flat"/>
+ <option _label="Ship Outlines" arg-set="--mode ships"/>
+ <option _label="Flat Pattern" arg-set="--mode flat"/>
<option id="random" _label="Ships or flat pattern"/>
</select>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</vgroup>
</hgroup>
<screensaver name="rdbomb" _label="RD-Bomb">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=xiooDyrZSsY"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Slow" _high-label="Fast"
low="0" high="250000" default="30000"
convert="invert"/>
- <number id="speed" type="slider" arg="-speed %"
+ <number id="speed" type="slider" arg="--speed %"
_label="Wander speed" _low-label="Slow" _high-label="Fast"
low="0.0" high="10.0" default="0.0"/>
- <number id="size" type="slider" arg="-size %"
+ <number id="size" type="slider" arg="--size %"
_label="Fill screen" _low-label="1%" _high-label="100%"
low="0.01" high="1.0" default="1.0"/>
</vgroup>
<vgroup>
- <number id="epoch" type="slider" arg="-epoch %"
+ <number id="epoch" type="slider" arg="--epoch %"
_label="Epoch" _low-label="Small" _high-label="Large"
low="1000" high="300000" default="40000"/>
- <number id="ncolors" type="slider" arg="-ncolors %"
+ <number id="ncolors" type="slider" arg="--ncolors %"
_label="Number of colors" _low-label="Two" _high-label="Many"
low="1" high="255" default="255"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<hgroup>
<vgroup>
- <number id="width" type="spinbutton" arg="-width %"
+ <number id="width" type="spinbutton" arg="--width %"
_label="X tile size" low="0" high="500" default="0"/>
- <number id="pixheight" type="spinbutton" arg="-height %"
+ <number id="pixheight" type="spinbutton" arg="--height %"
_label="Y tile size" low="0" high="500" default="0"/>
</vgroup>
<vgroup>
- <number id="reaction" type="spinbutton" arg="-reaction %"
+ <number id="reaction" type="spinbutton" arg="--reaction %"
_label="Reaction" low="-1" high="2" default="-1"/>
- <number id="diffusion" type="spinbutton" arg="-diffusion %"
+ <number id="diffusion" type="spinbutton" arg="--diffusion %"
_label="Diffusion" low="-1" high="2" default="-1"/>
<!-- #### default is wrong -->
- <number id="radius" type="spinbutton" arg="-radius %"
+ <number id="radius" type="spinbutton" arg="--radius %"
_label="Seed radius" low="-1" high="60" default="-1"/>
</vgroup>
<screensaver name="ripples" _label="Ripples">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=w8YXAalnRzc"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="50000"
convert="invert"/>
- <number id="duration" type="slider" arg="-duration %"
+ <number id="duration" type="slider" arg="--duration %"
_label="Duration" _low-label="10 seconds" _high-label="10 minutes"
low="10" high="600" default="120"/>
- <number id="rate" type="slider" arg="-rate %"
+ <number id="rate" type="slider" arg="--rate %"
_label="Drippiness" _low-label="Drizzle" _high-label="Storm"
low="1" high="100" default="5"
convert="invert"/>
- <number id="fluidity" type="slider" arg="-fluidity %"
+ <number id="fluidity" type="slider" arg="--fluidity %"
_label="Fluidity" _low-label="Small drops" _high-label="Big drops"
low="0" high="16" default="6"/>
</vgroup>
<vgroup>
<hgroup>
- <boolean id="stir" _label="Moving splashes" arg-set="-stir"/>
- <boolean id="oily" _label="Psychedelic colors" arg-set="-oily"/>
- <boolean id="gray" _label="Grayscale" arg-set="-grayscale"/>
+ <boolean id="stir" _label="Moving splashes" arg-set="--stir"/>
+ <boolean id="oily" _label="Psychedelic colors" arg-set="--oily"/>
+ <boolean id="gray" _label="Grayscale" arg-set="--grayscale"/>
</hgroup>
<xscreensaver-image />
- <number id="light" type="spinbutton" arg="-light %"
+ <number id="light" type="spinbutton" arg="--light %"
_label="Magic lighting effect" low="0" high="8" default="4"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="rocks" _label="Rocks">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=7x7PMI7LFK0"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="50000"
convert="invert"/>
- <number id="count" type="slider" arg="-count %"
+ <number id="count" type="slider" arg="--count %"
_label="Count" _low-label="Few" _high-label="Many"
low="0" high="200" default="100"/>
- <number id="speed" type="slider" arg="-speed %"
+ <number id="speed" type="slider" arg="--speed %"
_label="Velocity" _low-label="Slow" _high-label="Fast"
low="1" high="100" default="100"/>
<hgroup>
- <boolean id="rotate" _label="Rotation" arg-unset="-no-rotate"/>
- <boolean id="steer" _label="Steering" arg-unset="-no-move"/>
- <boolean id="3d" _label="Do Red/Blue 3D separation" arg-set="-3d"/>
+ <boolean id="rotate" _label="Rotation" arg-unset="--no-rotate"/>
+ <boolean id="steer" _label="Steering" arg-unset="--no-move"/>
+ <boolean id="3d" _label="Do Red/Blue 3D separation" arg-set="--3d"/>
</hgroup>
- <number id="ncolors" type="slider" arg="-colors %"
+ <number id="ncolors" type="slider" arg="--colors %"
_label="Number of colors" _low-label="Two" _high-label="Many"
low="1" high="255" default="5"/>
- <!-- #### -delta3d [1.5] -->
- <!-- #### -left3d [Blue] -->
- <!-- #### -right3d [Red] -->
-
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<video href="https://www.youtube.com/watch?v=KEW5TuPbWyg"/>
- <command arg="-root"/>
+ <command arg="--root"/>
<hgroup>
<select id="view-mode">
<option id="walk" _label="Random motion"/>
- <option id="walk" _label="Walk" arg-set="-view-mode walk"/>
- <option id="turn" _label="Turn" arg-set="-view-mode turn"/>
+ <option id="walk" _label="Walk" arg-set="--view-mode walk"/>
+ <option id="turn" _label="Turn" arg-set="--view-mode turn"/>
</select>
- <number id="surface-order" type="spinbutton" arg="-surface-order %"
+ <number id="surface-order" type="spinbutton" arg="--surface-order %"
_label="Order of the surface" low="2" high="9" default="3"/>
<boolean id="orientation-marks" _label="Show orientation marks"
- arg-set="-orientation-marks"/>
+ arg-set="--orientation-marks"/>
</hgroup>
<hgroup>
<boolean id="deform" _label="Deform the projective plane"
- arg-unset="-no-deform"/>
+ arg-unset="--no-deform"/>
- <number id="deform-speed" type="slider" arg="-deformation-speed %"
+ <number id="deform-speed" type="slider" arg="--deformation-speed %"
_label="Deformation speed"
_low-label="1.0" _high-label="100.0"
low="1.0" high="100.0" default="10.0"/>
- <number id="init-deform" type="slider" arg="-initial-deformation %"
+ <number id="init-deform" type="slider" arg="--initial-deformation %"
_label="Initial deformation"
_low-label="0.0" _high-label="1000.0"
low="0.0" high="1000.0" default="1000.0"/>
<vgroup>
<select id="display-mode">
<option id="random" _label="Random surface"/>
- <option id="wire" _label="Wireframe mesh" arg-set="-mode wireframe"/>
- <option id="surface" _label="Solid surface" arg-set="-mode surface"/>
- <option id="transparent" _label="Transparent surface" arg-set="-mode transparent"/>
+ <option id="wire" _label="Wireframe mesh" arg-set="--mode wireframe"/>
+ <option id="surface" _label="Solid surface" arg-set="--mode surface"/>
+ <option id="transparent" _label="Transparent surface" arg-set="--mode transparent"/>
</select>
<select id="appearance">
<option id="random" _label="Random pattern"/>
- <option id="solid" _label="Solid object" arg-set="-appearance solid"/>
- <option id="bands" _label="Distance bands" arg-set="-appearance distance-bands"/>
- <option id="bands" _label="Direction bands" arg-set="-appearance direction-bands"/>
+ <option id="solid" _label="Solid object" arg-set="--appearance solid"/>
+ <option id="bands" _label="Distance bands" arg-set="--appearance distance-bands"/>
+ <option id="bands" _label="Direction bands" arg-set="--appearance direction-bands"/>
</select>
<select id="colors">
<option id="random" _label="Random coloration"/>
- <option id="twosided" _label="One-sided" arg-set="-colors one-sided"/>
- <option id="twosided" _label="Two-sided" arg-set="-colors two-sided"/>
- <option id="rainbow" _label="Distance colors" arg-set="-colors distance"/>
- <option id="rainbow" _label="Direction colors" arg-set="-colors direction"/>
+ <option id="twosided" _label="One-sided" arg-set="--colors one-sided"/>
+ <option id="twosided" _label="Two-sided" arg-set="--colors two-sided"/>
+ <option id="rainbow" _label="Distance colors" arg-set="--colors distance"/>
+ <option id="rainbow" _label="Direction colors" arg-set="--colors direction"/>
</select>
<boolean id="change-colors" _label="Change colors"
- arg-set="-change-colors"/>
+ arg-set="--change-colors"/>
<select id="projection">
<option id="random" _label="Random Projection"/>
- <option id="perspective" _label="Perspective" arg-set="-projection perspective"/>
- <option id="orthographic" _label="Orthographic" arg-set="-projection orthographic"/>
+ <option id="perspective" _label="Perspective" arg-set="--projection perspective"/>
+ <option id="orthographic" _label="Orthographic" arg-set="--projection orthographic"/>
</select>
</vgroup>
<vgroup>
- <number id="speed-x" type="slider" arg="-speed-x %"
+ <number id="speed-x" type="slider" arg="--speed-x %"
_label="X rotation speed"
_low-label="-4.0" _high-label="4.0"
low="-4.0" high="4.0" default="1.1"/>
- <number id="speed-y" type="slider" arg="-speed-y %"
+ <number id="speed-y" type="slider" arg="--speed-y %"
_label="Y rotation speed"
_low-label="-4.0" _high-label="4.0"
low="-4.0" high="4.0" default="1.3"/>
- <number id="speed-z" type="slider" arg="-speed-z %"
+ <number id="speed-z" type="slider" arg="--speed-z %"
_label="Z rotation speed"
_low-label="-4.0" _high-label="4.0"
low="-4.0" high="4.0" default="1.5"/>
</vgroup>
<vgroup>
- <number id="walk-direction" type="slider" arg="-walk-direction %"
+ <number id="walk-direction" type="slider" arg="--walk-direction %"
_label="Walking direction"
_low-label="-180.0" _high-label="180.0"
low="-180.0" high="180.0" default="83.0"/>
- <number id="walk-speed" type="slider" arg="-walk-speed %"
+ <number id="walk-speed" type="slider" arg="--walk-speed %"
_label="Walking speed"
_low-label="1.0" _high-label="100.0"
low="1.0" high="100.0" default="20.0"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="25000"
convert="invert"/>
<vgroup>
<xscreensaver-updater />
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</vgroup>
</hgroup>
<screensaver name="rorschach" _label="Rorschach">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=G1OLn4Mdk5Y"/>
- <number id="iterations" type="slider" arg="-iterations %"
+ <number id="iterations" type="slider" arg="--iterations %"
_label="Iterations" _low-label="Small" _high-label="Large"
low="0" high="10000" default="4000"/>
- <number id="offset" type="slider" arg="-offset %"
+ <number id="offset" type="slider" arg="--offset %"
_label="Offset" _low-label="Small" _high-label="Large"
low="0" high="50" default="7"/>
- <boolean id="xsymmetry" _label="With X symmetry" arg-unset="-no-xsymmetry"/>
- <boolean id="ysymmetry" _label="With Y symmetry" arg-set="-ysymmetry"/>
+ <boolean id="xsymmetry" _label="With X symmetry" arg-unset="--no-xsymmetry"/>
+ <boolean id="ysymmetry" _label="With Y symmetry" arg-set="--ysymmetry"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Linger" _low-label="1 second" _high-label="1 minute"
low="1" high="60" default="5"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="rotor" _label="Rotor">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=HWcEvT1keDA"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="10000"
convert="invert"/>
- <number id="cycles" type="slider" arg="-cycles %"
+ <number id="cycles" type="slider" arg="--cycles %"
_label="Length" _low-label="Short" _high-label="Long"
low="2" high="100" default="20"/>
- <number id="ncolors" type="slider" arg="-ncolors %"
+ <number id="ncolors" type="slider" arg="--ncolors %"
_label="Number of colors" _low-label="Two" _high-label="Many"
low="1" high="255" default="200"/>
- <number id="count" type="spinbutton" arg="-count %"
+ <number id="count" type="spinbutton" arg="--count %"
_label="Count" low="0" high="20" default="4"/>
- <number id="size" type="spinbutton" arg="-size %"
+ <number id="size" type="spinbutton" arg="--size %"
_label="Size" low="-50" high="50" default="-6"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="rotzoomer" _label="Rot Zoomer">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=ecl8ykLswX8"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="10000" convert="invert"/>
- <number id="duration" type="slider" arg="-duration %"
+ <number id="duration" type="slider" arg="--duration %"
_label="Duration" _low-label="10 seconds" _high-label="10 minutes"
low="10" high="600" default="120"/>
- <number id="n" type="spinbutton" arg="-n %"
+ <number id="n" type="spinbutton" arg="--n %"
_label="Rectangle count" low="1" high="20" default="2"/>
<select id="mode">
<option id="random" _label="Random"/>
- <option id="stationary" _label="Stationary rectangles" arg-set="-mode stationary"/>
- <option id="move" _label="Wandering rectangles" arg-set="-mode move"/>
- <option id="sweep" _label="Sweeping arcs" arg-set="-mode sweep"/>
- <option id="circle" _label="Rotating discs" arg-set="-mode circle"/>
+ <option id="stationary" _label="Stationary rectangles" arg-set="--mode stationary"/>
+ <option id="move" _label="Wandering rectangles" arg-set="--mode move"/>
+ <option id="sweep" _label="Sweeping arcs" arg-set="--mode sweep"/>
+ <option id="circle" _label="Rotating discs" arg-set="--mode circle"/>
</select>
- <boolean id="anim" _label="Animate" arg-unset="-no-anim"/>
-
-<!-- <boolean id="shm" _label="Use shared memory" arg-unset="-no-shm"/> -->
+ <boolean id="anim" _label="Animate" arg-unset="--no-anim"/>
<xscreensaver-image />
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="rubik" _label="Rubik" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=AQdJgvyVkXU"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="20000"
convert="invert"/>
- <number id="count" type="spinbutton" arg="-count %"
+ <number id="count" type="spinbutton" arg="--count %"
_label="Count" low="-100" high="100" default="-30"/>
- <number id="cycles" type="slider" arg="-cycles %"
+ <number id="cycles" type="slider" arg="--cycles %"
_label="Rotation" _low-label="Slow" _high-label="Fast"
low="3" high="200" default="20"
convert="invert"/>
- <number id="size" type="spinbutton" arg="-size %"
+ <number id="size" type="spinbutton" arg="--size %"
_label="Size" low="-20" high="20" default="-6"/>
- <boolean id="shuffle" _label="Hide shuffling" arg-set="-hideshuffling"/>
+ <boolean id="shuffle" _label="Hide shuffling" arg-set="--hideshuffling"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="rubikblocks" _label="Rubik Blocks" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=B2sGaRLWz-A"/>
<hgroup>
<vgroup>
- <number id="speed" type="slider" arg="-delay %"
+ <number id="speed" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="20000" convert="invert"/>
- <number id="cubesize" type="slider" arg="-cubesize %"
+ <number id="cubesize" type="slider" arg="--cubesize %"
_label="Cube size" _low-label="Small" _high-label="Large"
low="0.4" high="2.0" default="1.0"
convert="ratio"/>
- <number id="rotspeed" type="slider" arg="-rotspeed %"
+ <number id="rotspeed" type="slider" arg="--rotspeed %"
_label="Rotation" _low-label="Slow" _high-label="Fast"
low="1.0" high="10.0" default="3.0"/>
<select id="start">
<option id="cube" _label="Start as cube"/>
- <option id="shuffle" _label="Start as random shape" arg-set="-randomize"/>
+ <option id="shuffle" _label="Start as random shape" arg-set="--randomize"/>
</select>
</vgroup>
<vgroup>
- <number id="spinspeed" type="slider" arg="-spinspeed %"
+ <number id="spinspeed" type="slider" arg="--spinspeed %"
_label="Spin" _low-label="Slow" _high-label="Fast"
low="0.01" high="4.0" default="0.1"/>
- <number id="wanderspeed" type="slider" arg="-wanderspeed %"
+ <number id="wanderspeed" type="slider" arg="--wanderspeed %"
_label="Wander" _low-label="Slow" _high-label="Fast"
low="0.001" high="0.1" default="0.005"/>
- <number id="wait" type="slider" arg="-wait %"
+ <number id="wait" type="slider" arg="--wait %"
_label="Linger" _low-label="Short" _high-label="Long"
low="10.0" high="100.0" default="40.0"/>
<hgroup>
- <boolean id="spin" _label="Spin" arg-unset="-no-spin"/>
- <boolean id="wander" _label="Wander" arg-unset="-no-wander"/>
- <boolean id="tex" _label="Outlines" arg-unset="-no-texture"/>
+ <boolean id="spin" _label="Spin" arg-unset="--no-spin"/>
+ <boolean id="wander" _label="Wander" arg-unset="--no-wander"/>
+ <boolean id="tex" _label="Outlines" arg-unset="--no-texture"/>
</hgroup>
<hgroup>
- <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="wire" _label="Wireframe" arg-set="--wireframe"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</hgroup>
</vgroup>
<screensaver name="sballs" _label="SBalls" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=pcfqdvvPG8k"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="30000"
convert="invert"/>
<select id="object">
<option id="random" _label="Random"/>
- <option id="tetra" _label="Tetrahedron" arg-set="-object 1"/>
- <option id="cube" _label="Cube" arg-set="-object 2"/>
- <option id="octa" _label="Octahedron" arg-set="-object 3"/>
- <option id="dodeca" _label="Dodecahedron" arg-set="-object 4"/>
- <option id="icosa" _label="Icosahedron" arg-set="-object 5"/>
- <option id="plane" _label="Plane" arg-set="-object 6"/>
- <option id="pyramid" _label="Pyramid" arg-set="-object 7"/>
- <option id="star" _label="Star" arg-set="-object 8"/>
+ <option id="tetra" _label="Tetrahedron" arg-set="--object 1"/>
+ <option id="cube" _label="Cube" arg-set="--object 2"/>
+ <option id="octa" _label="Octahedron" arg-set="--object 3"/>
+ <option id="dodeca" _label="Dodecahedron" arg-set="--object 4"/>
+ <option id="icosa" _label="Icosahedron" arg-set="--object 5"/>
+ <option id="plane" _label="Plane" arg-set="--object 6"/>
+ <option id="pyramid" _label="Pyramid" arg-set="--object 7"/>
+ <option id="star" _label="Star" arg-set="--object 8"/>
</select>
- <boolean id="tex" _label="Textured" arg-unset="-no-texture"/>
- <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="tex" _label="Textured" arg-unset="--no-texture"/>
+ <boolean id="wire" _label="Wireframe" arg-set="--wireframe"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="scooter" _label="Scooter" gl="no">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=Qqzk1BldlXg"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="20000"
convert="invert"/>
- <number id="cycles" type="slider" arg="-cycles %"
+ <number id="cycles" type="slider" arg="--cycles %"
_label="Boat Speed" _low-label="Very slow" _high-label="Very fast"
low="0" high="1000" default="5"/>
- <number id="count" type="slider" arg="-count %"
+ <number id="count" type="slider" arg="--count %"
_label="Number of doors" _low-label="4" _high-label="40"
low="4" high="40" default="24"/>
</vgroup>
<vgroup>
- <number id="size" type="slider" arg="-size %"
+ <number id="size" type="slider" arg="--size %"
_label="Number of stars" _low-label="1" _high-label="200"
low="0" high="200" default="100"/>
- <number id="ncolors" type="slider" arg="-ncolors %"
+ <number id="ncolors" type="slider" arg="--ncolors %"
_label="Number of colors" _low-label="Mono" _high-label="Colorful"
low="0" high="200" default="200"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
</vgroup>
<screensaver name="shadebobs" _label="Shade Bobs">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=gJtxnQ5_8Zk"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="20000" default="10000"
convert="invert"/>
- <!-- #### -degrees [0] -->
- <!-- #### -color [random] -->
-
- <number id="ncolors" type="slider" arg="-ncolors %"
+ <number id="ncolors" type="slider" arg="--ncolors %"
_label="Number of colors" _low-label="Two" _high-label="Many"
low="1" high="255" default="64"/>
- <number id="count" type="slider" arg="-count %"
+ <number id="count" type="slider" arg="--count %"
_label="Count" _low-label="One" _high-label="Many"
low="1" high="20" default="4"/>
- <number id="cycles" type="slider" arg="-cycles %"
+ <number id="cycles" type="slider" arg="--cycles %"
_label="Duration" _low-label="Short" _high-label="Long"
low="0" high="100" default="10"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="sierpinski" _label="Sierpinski">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=m0zdPWuFhjA"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="1000000" default="400000"
convert="invert"/>
- <number id="count" type="slider" arg="-count %"
+ <number id="count" type="slider" arg="--count %"
_label="Points" _low-label="Few" _high-label="Many"
low="10" high="10000" default="2000"/>
- <number id="cycles" type="slider" arg="-cycles %"
+ <number id="cycles" type="slider" arg="--cycles %"
_label="Timeout" _low-label="Small" _high-label="Large"
low="0" high="1000" default="100"/>
- <number id="ncolors" type="slider" arg="-ncolors %"
+ <number id="ncolors" type="slider" arg="--ncolors %"
_label="Number of colors" _low-label="Two" _high-label="Many"
low="1" high="255" default="64"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="sierpinski3d" _label="Sierpinski 3D" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=TGQRLAhDLv0"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="20000"
convert="invert"/>
- <number id="descent" type="slider" arg="-speed %"
+ <number id="descent" type="slider" arg="--speed %"
_label="Duration" _low-label="Short" _high-label="Long"
low="2" high="500" default="150"
convert="invert"/>
- <number id="depth" type="spinbutton" arg="-depth %"
+ <number id="depth" type="spinbutton" arg="--depth %"
_label="Max depth" low="1" high="6" default="5"/>
- <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="wire" _label="Wireframe" arg-set="--wireframe"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="skytentacles" _label="Sky Tentacles" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=iCjtXUSQv1A"/>
<hgroup>
<vgroup>
- <number id="count" type="slider" arg="-count %"
+ <number id="count" type="slider" arg="--count %"
_label="Tentacles" _low-label="1" _high-label="20"
low="1" high="20" default="9"/>
- <number id="length" type="slider" arg="-length %"
+ <number id="length" type="slider" arg="--length %"
_label="Length" _low-label="Short" _high-label="Long"
low="1.0" high="20.0" default="9.0"/>
- <number id="thickness" type="slider" arg="-thickness %"
+ <number id="thickness" type="slider" arg="--thickness %"
_label="Thickness" _low-label="Thin" _high-label="Thick"
low="0.1" high="5.0" default="1.0"
convert="ratio"/>
- <number id="flexibility" type="slider" arg="-flexibility %"
+ <number id="flexibility" type="slider" arg="--flexibility %"
_label="Flexibility" _low-label="Low" _high-label="High"
low="0.1" high="1.0" default="0.35"/>
- <number id="wiggliness" type="slider" arg="-wiggliness %"
+ <number id="wiggliness" type="slider" arg="--wiggliness %"
_label="Wiggliness" _low-label="Low" _high-label="High"
low="0.1" high="1.0" default="0.35"/>
</vgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Slow" _high-label="Fast"
low="0" high="100000" default="30000"
convert="invert"/>
- <number id="speed" type="slider" arg="-speed %"
+ <number id="speed" type="slider" arg="--speed %"
_label="Speed" _low-label="Slow" _high-label="Fast"
low="0.1" high="8.0" default="1.0"
convert="ratio"/>
- <number id="slices" type="slider" arg="-slices %"
+ <number id="slices" type="slider" arg="--slices %"
_label="X resolution" _low-label="Low" _high-label="High"
low="3" high="50" default="16"/>
- <number id="segments" type="slider" arg="-segments %"
+ <number id="segments" type="slider" arg="--segments %"
_label="Y resolution" _low-label="Low" _high-label="High"
low="2" high="50" default="24"/>
<hgroup>
- <boolean id="skin" _label="Draw skin" arg-unset="-no-texture"/>
- <boolean id="cel" _label="Cartoony" arg-set="-cel"/>
- <boolean id="intersect" _label="Tentacles can intersect" arg-set="-intersect"/>
+ <boolean id="skin" _label="Draw skin" arg-unset="--no-texture"/>
+ <boolean id="cel" _label="Cartoony" arg-set="--cel"/>
+ <boolean id="intersect" _label="Tentacles can intersect" arg-set="--intersect"/>
</hgroup>
<hgroup>
- <boolean id="smooth" _label="Smooth" arg-unset="-no-smooth"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="smooth" _label="Smooth" arg-unset="--no-smooth"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</hgroup>
</vgroup>
<screensaver name="slidescreen" _label="Slide Screen">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=uKNE4xCdlno"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="50000"
convert="invert"/>
- <number id="delay2" type="slider" arg="-delay2 %"
+ <number id="delay2" type="slider" arg="--delay2 %"
_label="Pause" _low-label="Short" _high-label="Long"
low="0" high="2000000" default="1000000"/>
- <number id="duration" type="slider" arg="-duration %"
+ <number id="duration" type="slider" arg="--duration %"
_label="Duration" _low-label="10 seconds" _high-label="10 minutes"
low="10" high="600" default="120"/>
</vgroup>
<vgroup>
- <number id="increment" type="slider" arg="-increment %"
+ <number id="increment" type="slider" arg="--increment %"
_label="Slide speed" _low-label="Slow" _high-label="Fast"
low="1" high="30" default="10"/>
- <number id="grid-size" type="slider" arg="-grid-size %"
+ <number id="grid-size" type="slider" arg="--grid-size %"
_label="Cell size" _low-label="Small" _high-label="Large"
low="12" high="500" default="70"/>
- <number id="ibw" type="spinbutton" arg="-ibw %"
+ <number id="ibw" type="spinbutton" arg="--ibw %"
_label="Gutter size" low="0" high="50" default="4"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="slip" _label="Slip">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=BgzNvBm4MuE"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="50000"
convert="invert"/>
- <number id="count" type="slider" arg="-count %"
+ <number id="count" type="slider" arg="--count %"
_label="Count" _low-label="Few" _high-label="Many"
low="0" high="100" default="35"/>
</vgroup>
<vgroup>
- <number id="cycles" type="slider" arg="-cycles %"
+ <number id="cycles" type="slider" arg="--cycles %"
_label="Timeout" _low-label="Small" _high-label="Large"
low="0" high="100" default="50"/>
- <number id="ncolors" type="slider" arg="-ncolors %"
+ <number id="ncolors" type="slider" arg="--ncolors %"
_label="Number of colors" _low-label="Two" _high-label="Many"
low="1" high="255" default="200"/>
</vgroup>
<xscreensaver-image />
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="sonar" _label="Sonar" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=XEL8g3qbthE"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="30000"
convert="invert"/>
- <number id="speed" type="slider" arg="-speed %"
+ <number id="speed" type="slider" arg="--speed %"
_label="Speed" _low-label="Slow" _high-label="Fast"
low="0.1" high="8.0" default="1.0"
convert="ratio"/>
<select id="ping">
<option id="sn" _label="Ping local subnet"/>
-<!--
- <option id="24" _label="Ping subnet/24 (254 hosts)" arg-set="-ping subnet/24"/>
- <option id="25" _label="Ping subnet/25 (126 hosts)" arg-set="-ping subnet/25"/>
- <option id="26" _label="Ping subnet/26 (62 hosts)" arg-set="-ping subnet/26"/>
- <option id="27" _label="Ping subnet/27 (31 hosts)" arg-set="-ping subnet/27"/>
- <option id="28" _label="Ping subnet/28 (14 hosts)"/>
- <option id="29" _label="Ping subnet/29 (6 hosts)" arg-set="-ping subnet/29"/>
- <option id="30" _label="Ping subnet/30 (2 hosts)" arg-set="-ping subnet/30"/>
--->
+ <option id="ssh" _label="Ping known SSH hosts"
+ arg-set="--ping /etc/hosts,$HOME/.ssh/known_hosts,$HOME/.ssh/known_hosts2"/>
- <option id="ssh" _label="Ping known SSH hosts" arg-set="-ping /etc/hosts,$HOME/.ssh/known_hosts,$HOME/.ssh/known_hosts2"/>
+ <option id="popular" _label="Ping Google, Facebook, etc."
+ arg-set="--ping google.com,facebook.com,twitter.com,yahoo.com,flickr.com,www.apple.com,wikipedia.org,linux.org,youtube.com,disqus.com,blogger.com,wordpress.com,tumblr.com,whitehouse.gov"/>
- <option id="popular" _label="Ping Google, Facebook, etc." arg-set="-ping google.com,facebook.com,twitter.com,yahoo.com,flickr.com,www.apple.com,wikipedia.org,linux.org,youtube.com,disqus.com,blogger.com,wordpress.com,tumblr.com,whitehouse.gov"/>
-
- <option id="sim" _label="Simulation (don't ping)" arg-set="-ping simulation"/>
+ <option id="sim" _label="Simulation (don't ping)"
+ arg-set="--ping simulation"/>
</select>
</vgroup>
<vgroup>
- <number id="font" type="slider" arg="-font-size %"
+ <number id="font" type="slider" arg="--font-size %"
_label="Font size" _low-label="Tiny" _high-label="Huge"
low="6.0" high="24.0" default="12"/>
- <number id="sweep" type="slider" arg="-sweep-size %"
+ <number id="sweep" type="slider" arg="--sweep-size %"
_label="Trail length" _low-label="Short" _high-label="Long"
low="0.02" high="0.7" default="0.3"/>
</vgroup>
<hgroup>
- <string id="aname" _label="Simulation team A name" arg="-team-a-name %"/>
- <number id="acount" type="spinbutton" arg="-team-a-count %"
+ <string id="aname" _label="Simulation team A name" arg="--team-a-name %"/>
+ <number id="acount" type="spinbutton" arg="--team-a-count %"
_label="A count" low="1" high="100" default="4"/>
</hgroup>
<hgroup>
- <string id="bname" _label="Simulation team B name" arg="-team-b-name %"/>
- <number id="bcount" type="spinbutton" arg="-team-b-count %"
+ <string id="bname" _label="Simulation team B name" arg="--team-b-name %"/>
+ <number id="bcount" type="spinbutton" arg="--team-b-count %"
_label="B count" low="1" high="100" default="4"/>
</hgroup>
<hgroup>
- <boolean id="dns" _label="Resolve host names" arg-unset="-no-dns"/>
- <boolean id="times" _label="Show ping times" arg-unset="-no-times"/>
- <boolean id="wobble" _label="Tilt" arg-unset="-no-wobble"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="dns" _label="Resolve host names" arg-unset="--no-dns"/>
+ <boolean id="times" _label="Show ping times" arg-unset="--no-times"/>
+ <boolean id="wobble" _label="Tilt" arg-unset="--no-wobble"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</hgroup>
<xscreensaver-updater />
<screensaver name="speedmine" _label="Speed Mine">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=awOnhCxRD_c"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="30000"
convert="invert"/>
- <number id="velocity" type="slider" arg="-maxspeed %"
+ <number id="velocity" type="slider" arg="--maxspeed %"
_label="Max velocity" _low-label="Slow" _high-label="Fast"
low="1" high="1000" default="700"/>
- <number id="thrust" type="slider" arg="-thrust %"
+ <number id="thrust" type="slider" arg="--thrust %"
_label="Thrust" _low-label="Slow" _high-label="Fast"
- low="0.0" high="4.0" default="1.0"
- convert="ratio"/>
+ low="0.0" high="4.0" default="1.0"/>
- <number id="gravity" type="slider" arg="-gravity %"
+ <number id="gravity" type="slider" arg="--gravity %"
_label="Gravity" _low-label="Low" _high-label="High"
low="0.0" high="25.0" default="9.8"/>
</vgroup>
<select id="mode">
<option id="speedmine" _label="Tunnel"/>
- <option id="speedworm" _label="Worm" arg-set="-worm"/>
+ <option id="speedworm" _label="Worm" arg-set="--worm"/>
</select>
- <boolean id="terrain" _label="Rocky walls" arg-unset="-no-terrain"/>
- <boolean id="bump" _label="Allow wall collisions" arg-unset="-no-bumps"/>
- <boolean id="bonus" _label="Present bonuses" arg-unset="-no-bonuses"/>
- <boolean id="xhair" _label="Display crosshair" arg-unset="-no-crosshair"/>
- <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
+ <boolean id="terrain" _label="Rocky walls" arg-unset="--no-terrain"/>
+ <boolean id="bump" _label="Allow wall collisions" arg-unset="--no-bumps"/>
+ <boolean id="bonus" _label="Present bonuses" arg-unset="--no-bonuses"/>
+ <boolean id="xhair" _label="Display crosshair" arg-unset="--no-crosshair"/>
+ <boolean id="wire" _label="Wireframe" arg-set="--wireframe"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</vgroup>
</hgroup>
- <!-- #### -vertigo [1.0] -->
- <!-- #### -darkground [#101010] -->
- <!-- #### -lightground [#a0a0a0] -->
- <!-- #### -tunnelend [#000000] -->
- <!-- #### -smoothness [6] -->
- <!-- #### -curviness [1.0] -->
- <!-- #### -twistiness [1.0] -->
- <!-- #### -no-widening -->
- <!-- #### -psychedelic -->
-
<xscreensaver-updater />
<_description>
<screensaver name="sphere" _label="Sphere">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=FswhxIVXdt8"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="20000"
convert="invert"/>
- <number id="ncolors" type="slider" arg="-ncolors %"
+ <number id="ncolors" type="slider" arg="--ncolors %"
_label="Number of colors" _low-label="Two" _high-label="Many"
low="1" high="255" default="64"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<video href="https://www.youtube.com/watch?v=CbmIggJ5GdA"/>
- <command arg="-root"/>
+ <command arg="--root"/>
<hgroup>
<vgroup>
<select id="deformation-style">
<option id="random" _label="Random deformation"/>
- <option id="analytic" _label="Analytic" arg-set="-eversion-method analytic"/>
- <option id="corrugations" _label="Corrugations" arg-set="-eversion-method corrugations"/>
+ <option id="analytic" _label="Analytic" arg-set="--eversion-method analytic"/>
+ <option id="corrugations" _label="Corrugations" arg-set="--eversion-method corrugations"/>
</select>
- <number id="deform-speed" type="slider" arg="-deformation-speed %"
+ <number id="deform-speed" type="slider" arg="--deformation-speed %"
_label="Deformation speed"
_low-label="1.0" _high-label="100.0"
low="1.0" high="100.0" default="10.0"/>
<vgroup>
<select id="display-mode">
<option id="random" _label="Random surface"/>
- <option id="surface" _label="Solid surface" arg-set="-mode surface"/>
- <option id="transparent" _label="Transparent surface" arg-set="-mode transparent"/>
+ <option id="surface" _label="Solid surface" arg-set="--mode surface"/>
+ <option id="transparent" _label="Transparent surface" arg-set="--mode transparent"/>
</select>
<select id="appearance">
<option id="random" _label="Random pattern"/>
- <option id="solid" _label="Solid object" arg-set="-appearance solid"/>
- <option id="pbands" _label="Parallel bands" arg-set="-appearance parallel-bands"/>
- <option id="mbands" _label="Meridian bands" arg-set="-appearance meridian-bands"/>
+ <option id="solid" _label="Solid object" arg-set="--appearance solid"/>
+ <option id="pbands" _label="Parallel bands" arg-set="--appearance parallel-bands"/>
+ <option id="mbands" _label="Meridian bands" arg-set="--appearance meridian-bands"/>
</select>
<!-- sphereeversion only, not outsidein -->
<select id="graticule">
<option id="random" _label="Random graticule"/>
- <option id="wgrat" _label="With graticule" arg-set="-graticule on"/>
- <option id="wograt" _label="Without graticule" arg-set="-graticule off"/>
+ <option id="wgrat" _label="With graticule" arg-set="--graticule on"/>
+ <option id="wograt" _label="Without graticule" arg-set="--graticule off"/>
</select>
<select id="colors">
<option id="random" _label="Random coloration"/>
- <option id="twosided" _label="Two-sided" arg-set="-colors two-sided"/>
- <option id="parallel" _label="Parallel colors" arg-set="-colors parallel"/>
- <option id="meridian" _label="Meridian colors" arg-set="-colors meridian"/>
- <option id="earth" _label="Earth colors" arg-set="-colors earth"/>
+ <option id="twosided" _label="Two-sided" arg-set="--colors two-sided"/>
+ <option id="parallel" _label="Parallel colors" arg-set="--colors parallel"/>
+ <option id="meridian" _label="Meridian colors" arg-set="--colors meridian"/>
+ <option id="earth" _label="Earth colors" arg-set="--colors earth"/>
</select>
<select id="projection">
<option id="random" _label="Random Projection"/>
- <option id="perspective" _label="Perspective" arg-set="-projection perspective"/>
- <option id="orthographic" _label="Orthographic" arg-set="-projection orthographic"/>
+ <option id="perspective" _label="Perspective" arg-set="--projection perspective"/>
+ <option id="orthographic" _label="Orthographic" arg-set="--projection orthographic"/>
</select>
</vgroup>
<!-- sphereeversion only, not outsidein -->
<select id="surface-order">
<option id="random" _label="Random surface order"/>
- <option id="2" _label="2" arg-set="-surface-order 2"/>
- <option id="3" _label="3" arg-set="-surface-order 3"/>
- <option id="4" _label="4" arg-set="-surface-order 4"/>
- <option id="5" _label="5" arg-set="-surface-order 5"/>
+ <option id="2" _label="2" arg-set="--surface-order 2"/>
+ <option id="3" _label="3" arg-set="--surface-order 3"/>
+ <option id="4" _label="4" arg-set="--surface-order 4"/>
+ <option id="5" _label="5" arg-set="--surface-order 5"/>
</select>
<!-- outsidein only, not sphereeversion -->
<select id="lunes">
<option id="lunes8" _label="8"/>
- <option id="lunes4" _label="4" arg-set="-lunes-4"/>
- <option id="lunes2" _label="2" arg-set="-lunes-2"/>
- <option id="lunes1" _label="1" arg-set="-lunes-1"/>
+ <option id="lunes4" _label="4" arg-set="--lunes-4"/>
+ <option id="lunes2" _label="2" arg-set="--lunes-2"/>
+ <option id="lunes1" _label="1" arg-set="--lunes-1"/>
</select>
<!-- outsidein only, not sphereeversion -->
<select id="hemispheres">
<option id="hemispheres2" _label="2"/>
- <option id="hemispheres1" _label="1" arg-set="-hemispheres-1"/>
+ <option id="hemispheres1" _label="1" arg-set="--hemispheres-1"/>
</select>
</vgroup>
<vgroup>
- <number id="speed-x" type="slider" arg="-speed-x %"
+ <number id="speed-x" type="slider" arg="--speed-x %"
_label="X rotation speed"
_low-label="-4.0" _high-label="4.0"
low="-4.0" high="4.0" default="0.0"/>
- <number id="speed-y" type="slider" arg="-speed-y %"
+ <number id="speed-y" type="slider" arg="--speed-y %"
_label="Y rotation speed"
_low-label="-4.0" _high-label="4.0"
low="-4.0" high="4.0" default="0.0"/>
- <number id="speed-z" type="slider" arg="-speed-z %"
+ <number id="speed-z" type="slider" arg="--speed-z %"
_label="Z rotation speed"
_low-label="-4.0" _high-label="4.0"
low="-4.0" high="4.0" default="0.0"/>
<vgroup>
<xscreensaver-updater />
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</vgroup>
</hgroup>
<screensaver name="spheremonics" _label="Spheremonics" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=KrNVwyWi0io"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="30000"
convert="invert"/>
- <number id="duration" type="slider" arg="-duration %"
+ <number id="duration" type="slider" arg="--duration %"
_label="Duration" _low-label="Short" _high-label="Long"
low="5" high="1000" default="200"/>
- <number id="resolution" type="slider" arg="-resolution %"
+ <number id="resolution" type="slider" arg="--resolution %"
_label="Resolution" _low-label="Low" _high-label="High"
low="5" high="100" default="64"/>
</vgroup>
<vgroup>
- <boolean id="wander" _label="Wander" arg-set="-wander"/>
+ <boolean id="wander" _label="Wander" arg-set="--wander"/>
<select id="rotation">
- <option id="no" _label="Don't rotate" arg-set="-spin 0"/>
- <option id="x" _label="Rotate around X axis" arg-set="-spin X"/>
- <option id="y" _label="Rotate around Y axis" arg-set="-spin Y"/>
- <option id="z" _label="Rotate around Z axis" arg-set="-spin Z"/>
- <option id="xy" _label="Rotate around X and Y axes" arg-set="-spin XY"/>
- <option id="xz" _label="Rotate around X and Z axes" arg-set="-spin XZ"/>
- <option id="yz" _label="Rotate around Y and Z axes" arg-set="-spin YZ"/>
+ <option id="no" _label="Don't rotate" arg-set="--spin 0"/>
+ <option id="x" _label="Rotate around X axis" arg-set="--spin X"/>
+ <option id="y" _label="Rotate around Y axis" arg-set="--spin Y"/>
+ <option id="z" _label="Rotate around Z axis" arg-set="--spin Z"/>
+ <option id="xy" _label="Rotate around X and Y axes" arg-set="--spin XY"/>
+ <option id="xz" _label="Rotate around X and Z axes" arg-set="--spin XZ"/>
+ <option id="yz" _label="Rotate around Y and Z axes" arg-set="--spin YZ"/>
<option id="xyz" _label="Rotate around all three axes"/>
</select>
- <boolean id="smooth" _label="Smoothed lines" arg-unset="-no-smooth"/>
- <boolean id="grid" _label="Draw grid" arg-unset="-no-grid"/>
- <boolean id="bbox" _label="Draw bounding box" arg-set="-bbox"/>
+ <boolean id="smooth" _label="Smoothed lines" arg-unset="--no-smooth"/>
+ <boolean id="grid" _label="Draw grid" arg-unset="--no-grid"/>
+ <boolean id="bbox" _label="Draw bounding box" arg-set="--bbox"/>
- <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="wire" _label="Wireframe" arg-set="--wireframe"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</vgroup>
</hgroup>
<screensaver name="spiral" _label="Spiral">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=8Ov2SxnO_Kg"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="50000"
convert="invert"/>
- <number id="count" type="slider" arg="-count %"
+ <number id="count" type="slider" arg="--count %"
_label="Count" _low-label="Few" _high-label="Many"
low="0" high="100" default="40"/>
- <number id="cycles" type="slider" arg="-cycles %"
+ <number id="cycles" type="slider" arg="--cycles %"
_label="Cycles" _low-label="Low" _high-label="High"
low="10" high="800" default="350"/>
- <number id="ncolors" type="slider" arg="-ncolors %"
+ <number id="ncolors" type="slider" arg="--ncolors %"
_label="Number of colors" _low-label="Two" _high-label="Many"
low="1" high="255" default="64"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="splitflap" _label="Split-Flap" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=rZOL2jyDey0"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="20000"
convert="invert"/>
- <number id="speed" type="slider" arg="-speed %"
+ <number id="speed" type="slider" arg="--speed %"
_label="Speed" _low-label="Slow" _high-label="Fast"
low="0.01" high="8.0" default="1.0"
convert="ratio"/>
- <number id="width" type="spinbutton" arg="-width %"
+ <number id="width" type="spinbutton" arg="--width %"
_label="Columns" low="1" high="120" default="22"/>
- <number id="height" type="spinbutton" arg="-height %"
+ <number id="height" type="spinbutton" arg="--height %"
_label="Rows" low="1" high="40" default="8"/>
<select id="text">
<option id="text" _label="Display text" />
- <option id="c12" _label="Display 12-hour clock" arg-set="-mode clock12" />
- <option id="c24" _label="Display 24-hour clock" arg-set="-mode clock24" />
+ <option id="c12" _label="Display 12-hour clock" arg-set="--mode clock12" />
+ <option id="c24" _label="Display 24-hour clock" arg-set="--mode clock24" />
</select>
<select id="facing">
<option id="front" _label="Always face front"/>
- <option id="nofront" _label="Spin all the way around" arg-set="-no-front"/>
+ <option id="nofront" _label="Spin all the way around" arg-set="--no-front"/>
</select>
<select id="rotation">
- <option id="no" _label="Don't rotate" arg-set="-spin 0"/>
- <option id="x" _label="Rotate around X axis" arg-set="-spin X"/>
- <option id="y" _label="Rotate around Y axis" arg-set="-spin Y"/>
- <option id="z" _label="Rotate around Z axis" arg-set="-spin Z"/>
- <option id="xy" _label="Rotate around X and Y axes" arg-set="-spin XY"/>
- <option id="xz" _label="Rotate around X and Z axes" arg-set="-spin XZ"/>
- <option id="yz" _label="Rotate around Y and Z axes" arg-set="-spin YZ"/>
+ <option id="no" _label="Don't rotate" arg-set="--spin 0"/>
+ <option id="x" _label="Rotate around X axis" arg-set="--spin X"/>
+ <option id="y" _label="Rotate around Y axis" arg-set="--spin Y"/>
+ <option id="z" _label="Rotate around Z axis" arg-set="--spin Z"/>
+ <option id="xy" _label="Rotate around X and Y axes" arg-set="--spin XY"/>
+ <option id="xz" _label="Rotate around X and Z axes" arg-set="--spin XZ"/>
+ <option id="yz" _label="Rotate around Y and Z axes" arg-set="--spin YZ"/>
<option id="xyz" _label="Rotate around all three axes"/>
</select>
<xscreensaver-text />
<hgroup>
- <boolean id="wander" _label="Wander" arg-unset="-no-wander"/>
- <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="wander" _label="Wander" arg-unset="--no-wander"/>
+ <boolean id="wire" _label="Wireframe" arg-set="--wireframe"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</hgroup>
<xscreensaver-updater />
<screensaver name="splodesic" _label="Splodesic" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=pwpTs1pEQmM"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="30000"
convert="invert"/>
- <number id="speed" type="slider" arg="-speed %"
+ <number id="speed" type="slider" arg="--speed %"
_label="Eruption frequency" _low-label="Seldom" _high-label="Often"
low="0.01" high="5.0" default="1.0"
convert="ratio"/>
<hgroup>
- <number id="freq" type="spinbutton" arg="-depth %"
+ <number id="freq" type="spinbutton" arg="--depth %"
_label="Depth" low="0" high="5" default="4"/>
- <boolean id="wander" _label="Wander" arg-unset="-no-wander"/>
- <boolean id="spin" _label="Spin" arg-unset="-no-spin"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="wander" _label="Wander" arg-unset="--no-wander"/>
+ <boolean id="spin" _label="Spin" arg-unset="--no-spin"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</hgroup>
<xscreensaver-updater />
<screensaver name="spotlight" _label="Spotlight">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=av29CVh2UeM"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="10000"
convert="invert"/>
- <number id="duration" type="slider" arg="-duration %"
+ <number id="duration" type="slider" arg="--duration %"
_label="Duration" _low-label="10 seconds" _high-label="10 minutes"
low="10" high="600" default="120"/>
- <number id="radius" type="slider" arg="-radius %"
+ <number id="radius" type="slider" arg="--radius %"
_label="Spotlight size" _low-label="Small" _high-label="Large"
low="5" high="350" default="125"/>
<xscreensaver-image />
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="sproingies" _label="Sproingies" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=fmHl17ppgc0"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="30000"
convert="invert"/>
- <number id="count" type="slider" arg="-count %"
+ <number id="count" type="slider" arg="--count %"
_label="Sproingies" _low-label="One" _high-label="Lots"
low="1" high="30" default="8"/>
<hgroup>
- <boolean id="nofall" _label="Fall off edge" arg-set="-fall"/>
- <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="nofall" _label="Fall off edge" arg-set="--fall"/>
+ <boolean id="wire" _label="Wireframe" arg-set="--wireframe"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</hgroup>
<xscreensaver-updater />
<screensaver name="squiral" _label="Squiral">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=WPhqyM9Bb4o"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="10000"
convert="invert"/>
- <number id="disorder" type="slider" arg="-disorder %"
+ <number id="disorder" type="slider" arg="--disorder %"
_label="Randomness" _low-label="Low" _high-label="High"
low="0.0" high="0.5" default="0.005"/>
- <number id="count" type="spinbutton" arg="-count %"
+ <number id="count" type="spinbutton" arg="--count %"
_label="Seeds" low="0" high="200" default="0"/>
</vgroup>
<vgroup>
- <number id="handedness" type="slider" arg="-handedness %"
+ <number id="handedness" type="slider" arg="--handedness %"
_label="Handedness" _low-label="Left" _high-label="Right"
low="0.0" high="1.0" default="0.5"/>
- <number id="fill" type="slider" arg="-fill %"
+ <number id="fill" type="slider" arg="--fill %"
_label="Density" _low-label="Sparse" _high-label="Dense"
low="0" high="100" default="75"/>
- <number id="ncolors" type="slider" arg="-ncolors %"
+ <number id="ncolors" type="slider" arg="--ncolors %"
_label="Number of colors" _low-label="Two" _high-label="Many"
low="1" high="255" default="100"/>
</vgroup>
</hgroup>
- <!-- #### -cycle -->
-
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="squirtorus" _label="Squirtorus" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=_JJvTDFPaN4"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="30000"
convert="invert"/>
- <number id="speed" type="slider" arg="-speed %"
+ <number id="speed" type="slider" arg="--speed %"
_label="Scrolling speed" _low-label="Slow" _high-label="Fast"
low="0.01" high="8.0" default="1.0"
convert="ratio"/>
- <number id="count" type="slider" arg="-count %"
+ <number id="count" type="slider" arg="--count %"
_label="Count" _low-label="One" _high-label="Lots"
low="1" high="50" default="16"/>
</vgroup>
<vgroup>
- <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="wire" _label="Wireframe" arg-set="--wireframe"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</vgroup>
</hgroup>
<screensaver name="stairs" _label="Stairs" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=Y1ceRT30qr0"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="20000"
convert="invert"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="starfish" _label="Starfish">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=atwc7IJHuLo"/>
<select id="mode">
<option id="random" _label="Random"/>
- <option id="zoom" _label="Color gradients" arg-set="-mode zoom"/>
- <option id="blob" _label="Pulsating blob" arg-set="-mode blob"/>
+ <option id="zoom" _label="Color gradients" arg-set="--mode zoom"/>
+ <option id="blob" _label="Pulsating blob" arg-set="--mode blob"/>
</select>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="10000"
convert="invert"/>
- <number id="duration" type="slider" arg="-duration %"
+ <number id="duration" type="slider" arg="--duration %"
_label="Duration" _low-label="1 second" _high-label="30 seconds"
low="1" high="60" default="30"/>
- <number id="thickness" type="slider" arg="-thickness %"
+ <number id="thickness" type="slider" arg="--thickness %"
_label="Lines" _low-label="Thin" _high-label="Thick"
low="0" high="150" default="0"/>
- <number id="ncolors" type="slider" arg="-colors %"
+ <number id="ncolors" type="slider" arg="--colors %"
_label="Number of colors" _low-label="Two" _high-label="Many"
low="1" high="255" default="200"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="starwars" _label="Star Wars" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=UUjC-6e7y_U"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_low-label=" Frame rate Low" _high-label="High"
low="0" high="100000" default="40000"
convert="invert"/>
- <number id="steps" type="slider" arg="-steps %"
+ <number id="steps" type="slider" arg="--steps %"
_low-label="Scroll speed Slow" _high-label="Fast"
low="1" high="100" default="35"
convert="invert"/>
- <number id="spin" type="slider" arg="-spin %"
+ <number id="spin" type="slider" arg="--spin %"
_low-label=" Stars speed Slow" _high-label="Fast"
low="0.0" high="0.2" default="0.03"/>
<vgroup>
<select id="align">
- <option id="left" _label="Flush left text" arg-set="-alignment left"/>
+ <option id="left" _label="Flush left text" arg-set="--alignment left"/>
<option id="center" _label="Centered text"/>
- <option id="right" _label="Flush right text" arg-set="-alignment right"/>
+ <option id="right" _label="Flush right text" arg-set="--alignment right"/>
</select>
- <boolean id="wrap" _label="Wrap long lines" arg-unset="-no-wrap"/>
- <boolean id="texture" _label="Texture-mapped font" arg-unset="-no-textures"/>
- <boolean id="smooth" _label="Anti-aliased lines" arg-unset="-no-smooth"/>
+ <boolean id="wrap" _label="Wrap long lines" arg-unset="--no-wrap"/>
+ <boolean id="texture" _label="Texture-mapped font" arg-unset="--no-textures"/>
+ <boolean id="smooth" _label="Anti-aliased lines" arg-unset="--no-smooth"/>
<hgroup>
- <boolean id="thick" _label="Thick lines" arg-unset="-no-thick"/>
- <boolean id="fade" _label="Fade out" arg-unset="-no-fade"/>
+ <boolean id="thick" _label="Thick lines" arg-unset="--no-thick"/>
+ <boolean id="fade" _label="Fade out" arg-unset="--no-fade"/>
</hgroup>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
- <number id="lines" type="spinbutton" arg="-lines %"
+ <number id="lines" type="spinbutton" arg="--lines %"
_label="Text lines" low="4" high="1000" default="125"/>
- <number id="size" type="spinbutton" arg="-size %"
+ <number id="size" type="spinbutton" arg="--size %"
_label="Font point size" low="-1" high="10" default="-1"/>
- <number id="columns" type="spinbutton" arg="-columns %"
+ <number id="columns" type="spinbutton" arg="--columns %"
_label="or, Text columns" low="-1" high="200" default="-1"/>
</vgroup>
<screensaver name="stonerview" _label="Stoner View" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=xvDK_wwnXWs"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="20000"
convert="invert"/>
- <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
- <boolean id="trans" _label="Translucent" arg-unset="-no-transparent"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="wire" _label="Wireframe" arg-set="--wireframe"/>
+ <boolean id="trans" _label="Translucent" arg-unset="--no-transparent"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="strange" _label="Strange">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=F1qna7UAxC0"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="10000"
convert="invert"/>
- <number id="curve" type="slider" arg="-curve %"
+ <number id="curve" type="slider" arg="--curve %"
_label="Curviness" _low-label="Low" _high-label="High"
low="1" high="50" default="10"/>
- <number id="points" type="slider" arg="-points %"
+ <number id="points" type="slider" arg="--points %"
_label="Number of points" _low-label="1k" _high-label="500k"
low="1000" high="500000" default="5500"/>
- <number id="pointSize" type="slider" arg="-point-size %"
+ <number id="pointSize" type="slider" arg="--point-size %"
_label="Point size" _low-label="1" _high-label="8"
low="1" high="8" default="1"/>
</vgroup>
<vgroup>
- <number id="zoom" type="slider" arg="-zoom %"
+ <number id="zoom" type="slider" arg="--zoom %"
_label="Zoom" _low-label="10%" _high-label="400%"
low="0.1" high="4.0" default="0.9"/>
- <number id="brightness" type="slider" arg="-brightness %"
+ <number id="brightness" type="slider" arg="--brightness %"
_label="Brightness" _low-label="10%" _high-label="400%"
low="0.1" high="4.0" default="1.0"
convert="ratio"/>
- <number id="motionBlur" type="slider" arg="-motion-blur %"
+ <number id="motionBlur" type="slider" arg="--motion-blur %"
_label="Motion blur" _low-label="1" _high-label="10"
low="1.0" high="10.0" default="3.0"/>
- <number id="ncolors" type="slider" arg="-ncolors %"
+ <number id="ncolors" type="slider" arg="--ncolors %"
_label="Number of colors" _low-label="Two" _high-label="Many"
low="1" high="255" default="100"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</vgroup>
</hgroup>
<screensaver name="substrate" _label="Substrate">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=dCCVgBOVD0E"/>
<hgroup>
<vgroup>
- <number id="speed" type="slider" arg="-growth-delay %"
+ <number id="speed" type="slider" arg="--growth-delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="18000" convert="invert"/>
- <number id="maxcyc" type="slider" arg="-max-cycles %"
+ <number id="maxcyc" type="slider" arg="--max-cycles %"
_label="Duration" _low-label="Short" _high-label="Long"
low="2000" high="25000" default="10000" />
- <number id="sandg" type="slider" arg="-sand-grains %"
+ <number id="sandg" type="slider" arg="--sand-grains %"
_label="Sand grains" _low-label="Few" _high-label="Lots"
low="16" high="128" default="64" />
- <number id="curve" type="slider" arg="-circle-percent %"
+ <number id="curve" type="slider" arg="--circle-percent %"
_label="Circle percentage" _low-label="0%" _high-label="100%"
low="0" high="100" default="33" />
</vgroup>
<vgroup>
- <number id="init" type="spinbutton" arg="-initial-cracks %"
+ <number id="init" type="spinbutton" arg="--initial-cracks %"
_label="Initial cracks" low="3" high="15" default="3"/>
- <boolean id="wire" _label="Wireframe only" arg-set="-wireframe" />
+ <boolean id="wire" _label="Wireframe only" arg-set="--wireframe" />
- <boolean id="seamless" _label="Seamless mode" arg-set="-seamless" />
+ <boolean id="seamless" _label="Seamless mode" arg-set="--seamless" />
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</vgroup>
</hgroup>
<screensaver name="superquadrics" _label="Superquadrics" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=Mjlc7iPA1N4"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="40000"
convert="invert"/>
- <number id="spinspeed" type="slider" arg="-spinspeed %"
+ <number id="spinspeed" type="slider" arg="--spinspeed %"
_label="Spin speed" _low-label="Slow" _high-label="Fast"
low="0.1" high="15.0" default="5.0"/>
- <number id="count" type="slider" arg="-count %"
+ <number id="count" type="slider" arg="--count %"
_label="Density" _low-label="Low" _high-label="High"
low="0" high="100" default="25"/>
- <number id="cycles" type="slider" arg="-cycles %"
+ <number id="cycles" type="slider" arg="--cycles %"
_label="Duration" _low-label="Short" _high-label="Long"
low="0" high="100" default="40"/>
- <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="wire" _label="Wireframe" arg-set="--wireframe"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="surfaces" _label="Surfaces" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=Q412lxz3fTg"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="20000"
convert="invert"/>
- <number id="descent" type="slider" arg="-speed %"
+ <number id="descent" type="slider" arg="--speed %"
_label="Duration" _low-label="Short" _high-label="Long"
low="2" high="2000" default="300"
convert="invert"/>
<vgroup>
<select id="surface">
<option id="random" _label="Random Surface"/>
- <option id="dini" _label="Dini's Surface" arg-set="-surface dini"/>
- <option id="enneper" _label="Enneper's Surface" arg-set="-surface enneper"/>
- <option id="kuen" _label="Kuen Surface" arg-set="-surface kuen"/>
- <option id="moebius" _label="Möbius Strip" arg-set="-surface moebius"/>
- <option id="seashell" _label="Seashell" arg-set="-surface seashell"/>
- <option id="swallow" _label="Swallowtail" arg-set="-surface swallowtail"/>
- <option id="bohemian" _label="Bohemian Dome" arg-set="-surface bohemian"/>
- <option id="whitney" _label="Whitney Umbrella" arg-set="-surface whitney"/>
- <option id="pluecker" _label="Pluecker's Conoid" arg-set="-surface pluecker"/>
- <option id="henneberg" _label="Henneberg's Surface" arg-set="-surface henneberg"/>
- <option id="catalan" _label="Catalan's Surface" arg-set="-surface catalan"/>
- <option id="corkscrew" _label="Corkscrew Surface" arg-set="-surface corkscrew"/>
+ <option id="dini" _label="Dini's Surface" arg-set="--surface dini"/>
+ <option id="enneper" _label="Enneper's Surface" arg-set="--surface enneper"/>
+ <option id="kuen" _label="Kuen Surface" arg-set="--surface kuen"/>
+ <option id="moebius" _label="Möbius Strip" arg-set="--surface moebius"/>
+ <option id="seashell" _label="Seashell" arg-set="--surface seashell"/>
+ <option id="swallow" _label="Swallowtail" arg-set="--surface swallowtail"/>
+ <option id="bohemian" _label="Bohemian Dome" arg-set="--surface bohemian"/>
+ <option id="whitney" _label="Whitney Umbrella" arg-set="--surface whitney"/>
+ <option id="pluecker" _label="Pluecker's Conoid" arg-set="--surface pluecker"/>
+ <option id="henneberg" _label="Henneberg's Surface" arg-set="--surface henneberg"/>
+ <option id="catalan" _label="Catalan's Surface" arg-set="--surface catalan"/>
+ <option id="corkscrew" _label="Corkscrew Surface" arg-set="--surface corkscrew"/>
</select>
<select id="mode">
<option id="random" _label="Random Display Mode"/>
- <option id="points" _label="Points" arg-set="-mode points"/>
- <option id="lines" _label="Lines" arg-set="-mode lines"/>
- <option id="line_loop" _label="Line Loops" arg-set="-mode line-loops"/>
+ <option id="points" _label="Points" arg-set="--mode points"/>
+ <option id="lines" _label="Lines" arg-set="--mode lines"/>
+ <option id="line_loop" _label="Line Loops" arg-set="--mode line-loops"/>
</select>
<hgroup>
- <boolean id="wander" _label="Wander" arg-set="-wander"/>
- <boolean id="spin" _label="Spin" arg-unset="-no-spin"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="wander" _label="Wander" arg-set="--wander"/>
+ <boolean id="spin" _label="Spin" arg-unset="--no-spin"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</hgroup>
</vgroup>
</hgroup>
<screensaver name="swirl" _label="Swirl">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=o_VRQxPCB7w"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="10000"
convert="invert"/>
- <number id="count" type="slider" arg="-count %"
+ <number id="count" type="slider" arg="--count %"
_label="Count" _low-label="Few" _high-label="Many"
low="0" high="20" default="5"/>
- <number id="ncolors" type="slider" arg="-ncolors %"
+ <number id="ncolors" type="slider" arg="--ncolors %"
_label="Number of colors" _low-label="Two" _high-label="Many"
low="1" high="255" default="200"/>
-<!-- <boolean id="shm" _label="Use shared memory" arg-unset="-no-shm"/> -->
-
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="t3d" _label="T3D">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=5UohH7U2CAI"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="40000"
convert="invert"/>
- <number id="move" type="slider" arg="-move %"
+ <number id="move" type="slider" arg="--move %"
_label="Turn side-to-side" _low-label="0 deg" _high-label="90 deg"
low="0.0" high="3.0" default="0.5"/>
- <number id="wobble" type="slider" arg="-wobble %"
+ <number id="wobble" type="slider" arg="--wobble %"
_label="Wobbliness" _low-label="Low" _high-label="High"
low="0.0" high="3.0" default="2.0"/>
</vgroup>
<vgroup>
- <number id="cycle" type="slider" arg="-cycle %"
+ <number id="cycle" type="slider" arg="--cycle %"
_label="Cycle seconds" _low-label="Low" _high-label="High"
low="0.0" high="60.0" default="10.0"/>
- <number id="mag" type="slider" arg="-mag %"
+ <number id="mag" type="slider" arg="--mag %"
_label="Magnification" _low-label="Smaller" _high-label="Bigger"
low="0.1" high="4.0" default="1.0"
convert="ratio"/>
<select id="mins">
- <option id="min2" _label="Minute tick marks" arg-set="-minutes"/>
+ <option id="min2" _label="Minute tick marks" arg-set="--minutes"/>
<option id="min5" _label="5 minute tick marks"/>
</select>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</vgroup>
</hgroup>
- <!-- #### -fast [50] -->
- <!-- #### -colcycle [?] -->
- <!-- #### -hsvcycle [0.0] -->
- <!-- #### -rgb [?] -->
- <!-- #### -hsv [?] -->
-
<xscreensaver-updater />
<_description>
<screensaver name="tangram" _label="Tangram" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=JgJ-OsgCCJ4"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="10000"/>
- <number id="viewing_time" type="slider" arg="-viewing_time %"
+ <number id="viewing_time" type="slider" arg="--viewing_time %"
_label="Linger" _low-label="Brief" _high-label="Long"
low="0" high="30" default="5" />
- <number id="x_camera_rotate" type="slider" arg="-x_camera_rotate %"
+ <number id="x_camera_rotate" type="slider" arg="--x_camera_rotate %"
_label="X rotation" _low-label="Slow" _high-label="Fast"
low="0.0" high="1.0" default="0.2" />
- <number id="y_camera_rotate" type="slider" arg="-y_camera_rotate %"
+ <number id="y_camera_rotate" type="slider" arg="--y_camera_rotate %"
_label="Y rotation" _low-label="Slow" _high-label="Fast"
low="0.0" high="1.0" default="0.5" />
- <number id="z_camera_rotate" type="slider" arg="-z_camera_rotate %"
+ <number id="z_camera_rotate" type="slider" arg="--z_camera_rotate %"
_label="Z rotation" _low-label="Slow" _high-label="Fast"
low="0.0" high="1.0" default="0" />
<hgroup>
- <boolean id="labels" _label="Draw labels" arg-unset="-no-labels"/>
- <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
- <boolean id="rotate" _label="Rotate" arg-unset="-no-rotate"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="labels" _label="Draw labels" arg-unset="--no-labels"/>
+ <boolean id="wire" _label="Wireframe" arg-set="--wireframe"/>
+ <boolean id="rotate" _label="Rotate" arg-unset="--no-rotate"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</hgroup>
<xscreensaver-updater />
<screensaver name="tessellimage" _label="Tessellimage">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=JNgybysnYU8"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="30000"
convert="invert"/>
- <number id="duration2" type="slider" arg="-duration2 %"
+ <number id="duration2" type="slider" arg="--duration2 %"
_label="Speed" _low-label="0.1 second" _high-label="4 seconds"
low="0.1" high="4.0" default="0.4"/>
- <number id="duration" type="slider" arg="-duration %"
+ <number id="duration" type="slider" arg="--duration %"
_label="Duration" _low-label="10 seconds" _high-label="10 minutes"
low="10" high="600" default="120"/>
- <number id="depth" type="slider" arg="-max-depth %"
+ <number id="depth" type="slider" arg="--max-depth %"
_label="Complexity" _low-label="Shallow" _high-label="Deep"
low="1000" high="100000" default="30000"/>
</vgroup>
<select id="mode">
<option id="random" _label="Delaunay or voronoi"/>
- <option _label="Delaunay" arg-set="-mode delaunay"/>
- <option _label="Voronoi" arg-set="-mode voronoi"/>
+ <option _label="Delaunay" arg-set="--mode delaunay"/>
+ <option _label="Voronoi" arg-set="--mode voronoi"/>
</select>
<xscreensaver-image />
- <boolean id="fill" _label="Fill screen" arg-unset="-no-fill-screen"/>
- <boolean id="outline" _label="Outline triangles" arg-unset="-no-outline"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="fill" _label="Fill screen" arg-unset="--no-fill-screen"/>
+ <boolean id="outline" _label="Outline triangles" arg-unset="--no-outline"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
</vgroup>
<screensaver name="testx11" _label="Test X11">
- <command arg="-root"/>
+ <command arg="--root"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="thornbird" _label="Thornbird">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=rfGfPezVnac"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="10000"
convert="invert"/>
- <number id="count" type="slider" arg="-count %"
+ <number id="count" type="slider" arg="--count %"
_label="Points" _low-label="Few" _high-label="Many"
low="10" high="1000" default="100"/>
- <number id="cycles" type="slider" arg="-cycles %"
+ <number id="cycles" type="slider" arg="--cycles %"
_label="Thickness" _low-label="Thin" _high-label="Thick"
low="2" high="1000" default="400"/>
-<!--
- <number id="ncolors" type="slider" arg="-ncolors %"
- _label="Number of colors" _low-label="Two" _high-label="Many"
- low="2" high="255" default="64"/>
--->
-
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="timetunnel" _label="Time Tunnel" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=GZe5rk_7TnA"/>
- <number id="start" type="slider" arg="-start %"
+ <number id="start" type="slider" arg="--start %"
_label="Start sequence time" _low-label="0 sec" _high-label="30 sec"
low="0.00" high="27.79" default="0.00"/>
- <number id="end" type="slider" arg="-end %"
+ <number id="end" type="slider" arg="--end %"
_label="End sequence time" _low-label="0 sec" _high-label="30 sec"
low="0.00" high="27.79" default="27.79"/>
<hgroup>
<vgroup>
- <boolean id="logo" _label="Draw logo" arg-unset="-no-logo"/>
- <boolean id="reverse" _label="Run backward" arg-set="-reverse"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
- </vgroup>
- <vgroup>
-<!--
- <string id="tardis" _label="Tardis image " arg="-tardis %"/>
- <string id="head" _label="Head image " arg="-head %"/>
- <string id="marquee" _label="Marquee image " arg="-marquee %"/>
- <string id="tun1" _label="Tardis tunnel image " arg="-tun1 %"/>
- <string id="tun2" _label="Middle tunnel image" arg="-tun2 %"/>
- <string id="tun3" _label="Final tunnel image " arg="-tun3 %"/>
--->
+ <boolean id="logo" _label="Draw logo" arg-unset="--no-logo"/>
+ <boolean id="reverse" _label="Run backward" arg-set="--reverse"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</vgroup>
</hgroup>
<screensaver name="topblock" _label="Top Block" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=zj0FHFJgQJ8"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="10000"
convert="invert"/>
- <number id="dropspeed" type="slider" arg="-dropSpeed %"
+ <number id="dropspeed" type="slider" arg="--dropSpeed %"
_label="Drop speed" _low-label="Slow" _high-label="Fast"
low="1" high="9" default="4"/>
- <number id="size" type="slider" arg="-size %"
+ <number id="size" type="slider" arg="--size %"
_label="Carpet size" _low-label="Small" _high-label="Large"
low="1" high="10" default="2"/>
- <number id="spawn" type="slider" arg="-spawn %"
+ <number id="spawn" type="slider" arg="--spawn %"
_label="Spawn likelyhood" _low-label="Low" _high-label="High"
low="4" high="1000" default="50"
convert="invert"/>
</vgroup>
<vgroup>
- <number id="resolution" type="slider" arg="-resolution %"
+ <number id="resolution" type="slider" arg="--resolution %"
_label="Polygon count" _low-label="Low" _high-label="High"
low="4" high="20" default="4"/>
- <number id="maxColors" type="slider" arg="-maxColors %"
+ <number id="maxColors" type="slider" arg="--maxColors %"
_label="Colors" _low-label="Few" _high-label="Many"
low="1" high="32" default="7"/>
- <number id="rotatespeed" type="slider" arg="-rotateSpeed %"
+ <number id="rotatespeed" type="slider" arg="--rotateSpeed %"
_label="Rotation" _low-label="Slow" _high-label="Fast"
low="1" high="1000" default="10"/>
</vgroup>
</hgroup>
<hgroup>
- <boolean id="rotate" _label="Rotate" arg-unset="-no-rotate"/>
- <boolean id="follow" _label="Follow" arg-set="-follow"/>
- <boolean id="blob" _label="Blob mode" arg-set="-blob"/>
- <boolean id="override" _label="Tunnel mode" arg-set="-override"/>
- <boolean id="carpet" _label="Carpet" arg-unset="-no-carpet"/>
+ <boolean id="rotate" _label="Rotate" arg-unset="--no-rotate"/>
+ <boolean id="follow" _label="Follow" arg-set="--follow"/>
+ <boolean id="blob" _label="Blob mode" arg-set="--blob"/>
+ <boolean id="override" _label="Tunnel mode" arg-set="--override"/>
+ <boolean id="carpet" _label="Carpet" arg-unset="--no-carpet"/>
</hgroup>
<hgroup>
- <boolean id="nipples" _label="Nipples" arg-unset="-no-nipples"/>
- <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="nipples" _label="Nipples" arg-unset="--no-nipples"/>
+ <boolean id="wire" _label="Wireframe" arg-set="--wireframe"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</hgroup>
<xscreensaver-updater />
<screensaver name="triangle" _label="Triangle">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=GXrzjY-Flro"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="10000"
convert="invert"/>
- <number id="ncolors" type="slider" arg="-ncolors %"
+ <number id="ncolors" type="slider" arg="--ncolors %"
_label="Number of colors" _low-label="Two" _high-label="Many"
low="1" high="255" default="128"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="tronbit" _label="Tron Bit" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=dIF4fodt-L8"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="30000"
convert="invert"/>
- <number id="speed" type="slider" arg="-speed %"
+ <number id="speed" type="slider" arg="--speed %"
_label="Animation speed" _low-label="Slow" _high-label="Fast"
low="0.05" high="10.0" default="1.0"
convert="ratio"/>
<hgroup>
- <boolean id="spin" _label="Spin" arg-unset="-no-spin"/>
- <boolean id="wander" _label="Wander" arg-unset="-no-wander"/>
- <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="spin" _label="Spin" arg-unset="--no-spin"/>
+ <boolean id="wander" _label="Wander" arg-unset="--no-wander"/>
+ <boolean id="wire" _label="Wireframe" arg-set="--wireframe"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</hgroup>
<xscreensaver-updater />
<screensaver name="truchet" _label="Truchet">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=hoJ23JSsUD8"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="1000000" default="400000"
convert="invert"/>
- <!-- #### -min-width [40] -->
- <!-- #### -max-height [150] -->
- <!-- #### -max-width [150] -->
- <!-- #### -min-height [40] -->
- <!-- #### -max-linewidth [25] -->
- <!-- #### -min-linewidth [2] -->
- <!-- #### -no-erase -->
- <!-- #### -erase-count [25] -->
- <!-- #### -not-square -->
- <!-- #### -no-angles -->
- <!-- #### -no-curves -->
- <!-- #### -scroll -->
- <!-- #### -scroll-overlap [400] -->
- <!-- #### -anim-delay [100] -->
- <!-- #### -anim-step-size [3] -->
-
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="twang" _label="Twang">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=7pxDMSduQoU"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="10000"
convert="invert"/>
- <number id="duration" type="slider" arg="-duration %"
+ <number id="duration" type="slider" arg="--duration %"
_label="Duration" _low-label="10 seconds" _high-label="10 minutes"
low="10" high="600" default="120"/>
- <number id="event-chance" type="slider" arg="-event-chance %"
+ <number id="event-chance" type="slider" arg="--event-chance %"
_label="Randomness" _low-label="Slow" _high-label="Jumpy"
low="0.0" high="0.1" default="0.01"/>
- <number id="friction" type="slider" arg="-friction %"
+ <number id="friction" type="slider" arg="--friction %"
_label="Friction" _low-label="Low" _high-label="High"
low="0.0" high="0.2" default="0.05"/>
</vgroup>
<vgroup>
- <number id="springiness" type="slider" arg="-springiness %"
+ <number id="springiness" type="slider" arg="--springiness %"
_label="Springiness" _low-label="Low" _high-label="High"
low="0.0" high="1.0" default="0.1"/>
- <number id="transference" type="slider" arg="-transference %"
+ <number id="transference" type="slider" arg="--transference %"
_label="Transference" _low-label="Low" _high-label="High"
low="0.0" high="0.1" default="0.025"/>
- <number id="tile-size" type="slider" arg="-tile-size %"
+ <number id="tile-size" type="slider" arg="--tile-size %"
_label="Tile size" _low-label="Small" _high-label="Large"
low="10" high="512" default="120"/>
- <number id="border-width" type="spinbutton" arg="-border-width %"
+ <number id="border-width" type="spinbutton" arg="--border-width %"
_label="Border width" low="0" high="20" default="3"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</vgroup>
</hgroup>
<screensaver name="unicrud" _label="Unicrud" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=prEzdYMZ7xA"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="20000"
convert="invert"/>
- <number id="speed" type="slider" arg="-speed %"
+ <number id="speed" type="slider" arg="--speed %"
_label="Animation speed" _low-label="Slow" _high-label="Fast"
low="0.05" high="10.0" default="1.0"
convert="ratio"/>
<hgroup>
- <boolean id="wander" _label="Wander" arg-unset="-no-wander"/>
- <boolean id="spin" _label="Spin" arg-unset="-no-spin"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
- <boolean id="titles" _label="Show titles" arg-unset="-no-titles"/>
+ <boolean id="wander" _label="Wander" arg-unset="--no-wander"/>
+ <boolean id="spin" _label="Spin" arg-unset="--no-spin"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
+ <boolean id="titles" _label="Show titles" arg-unset="--no-titles"/>
</hgroup>
<select id="block">
<option _label="Display everything"/>
- <option _label="Display Latin1" arg-set="-block Latin1,Latin_Extended-A,Latin_Extended-B,Spacing_Modifier_Letters"/>
- <option _label="Display simple characters" arg-set="-block Latin1,Latin_Extended-A,Latin_Extended-B,Spacing_Modifier_Letters,Phonetic_Extensions,Latin_Extended_Additional,Greek_Extended,General_Punctuation,Superscripts_and_Subscripts,Currency_Symbols,Letterlike_Symbols,Number_Forms"/>
- <option _label="Display mathematical symbols" arg-set="-block Greek_and_Coptic,Mathematical_Operators,Miscellaneous_Mathematical_Symbols-A,Supplemental_Arrows-A,Supplemental_Arrows-B,Miscellaneous_Mathematical_Symbols-B,Supplemental_Mathematical_Operators,Miscellaneous_Symbols_and_Arrows"/>
- <option _label="Display emoticons" arg-set="-block Currency_Symbols,Miscellaneous_Technical,Box_Drawing,Geometric_Shapes,Miscellaneous_Symbols,Dingbats,Mahjong_Tiles,Domino_Tiles,Playing_Cards,Miscellaneous_Symbols_and_Pictographs,Emoticons,Ornamental_Dingbats,Transport_and_Map_Symbols,Alchemical_Symbols,Geometric_Shapes_Extended,Supplemental_Symbols_and_Pictographs,Egyptian_Hieroglyphs"/>
- <option _label="Display hieroglyphs" arg-set="-block Egyptian_Hieroglyphs"/>
+ <option _label="Display Latin1" arg-set="--block Latin1,Latin_Extended-A,Latin_Extended-B,Spacing_Modifier_Letters"/>
+ <option _label="Display simple characters" arg-set="--block Latin1,Latin_Extended-A,Latin_Extended-B,Spacing_Modifier_Letters,Phonetic_Extensions,Latin_Extended_Additional,Greek_Extended,General_Punctuation,Superscripts_and_Subscripts,Currency_Symbols,Letterlike_Symbols,Number_Forms"/>
+ <option _label="Display mathematical symbols" arg-set="--block Greek_and_Coptic,Mathematical_Operators,Miscellaneous_Mathematical_Symbols-A,Supplemental_Arrows-A,Supplemental_Arrows-B,Miscellaneous_Mathematical_Symbols-B,Supplemental_Mathematical_Operators,Miscellaneous_Symbols_and_Arrows"/>
+ <option _label="Display emoticons" arg-set="--block Currency_Symbols,Miscellaneous_Technical,Box_Drawing,Geometric_Shapes,Miscellaneous_Symbols,Dingbats,Mahjong_Tiles,Domino_Tiles,Playing_Cards,Miscellaneous_Symbols_and_Pictographs,Emoticons,Ornamental_Dingbats,Transport_and_Map_Symbols,Alchemical_Symbols,Geometric_Shapes_Extended,Supplemental_Symbols_and_Pictographs,Egyptian_Hieroglyphs"/>
+ <option _label="Display hieroglyphs" arg-set="--block Egyptian_Hieroglyphs"/>
</select>
<xscreensaver-updater />
<screensaver name="unknownpleasures" _label="Unknown Pleasures" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=DEWPiUbwnt0"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="30000"
convert="invert"/>
- <number id="count" type="slider" arg="-count %"
+ <number id="count" type="slider" arg="--count %"
_label="Scanlines" _low-label="Few" _high-label="Many"
low="3" high="200" default="80"/>
- <number id="speed" type="slider" arg="-speed %"
+ <number id="speed" type="slider" arg="--speed %"
_label="Speed" _low-label="Slow" _high-label="Fast"
low="0.1" high="20.0" default="1.0"
convert="ratio"/>
</vgroup>
<vgroup>
- <number id="resolution" type="slider" arg="-resolution %"
+ <number id="resolution" type="slider" arg="--resolution %"
_label="Resolution" _low-label="Low" _high-label="High"
low="5" high="300" default="100"/>
- <number id="amplitude" type="slider" arg="-amplitude %"
+ <number id="amplitude" type="slider" arg="--amplitude %"
_label="Amplitude" _low-label="Low" _high-label="High"
low="0.01" high="0.25" default="0.13"/>
- <number id="noise" type="slider" arg="-noise %"
+ <number id="noise" type="slider" arg="--noise %"
_label="Noise" _low-label="Low" _high-label="High"
- low="0.0" high="3.0" default="1.0"
- convert="ratio"/>
+ low="0.0" high="3.0" default="1.0"/>
</vgroup>
</hgroup>
<hgroup>
- <boolean id="ortho" _label="Orthographic Projection" arg-unset="-no-ortho"/>
- <boolean id="buzz" _label="Buzz" arg-set="-buzz"/>
- <boolean id="wire" _label="Wireframe" arg-set="-wireframe"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="ortho" _label="Orthographic Projection" arg-unset="--no-ortho"/>
+ <boolean id="buzz" _label="Buzz" arg-set="--buzz"/>
+ <boolean id="wire" _label="Wireframe" arg-set="--wireframe"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</hgroup>
- <file id="mask" _label="Mask image" arg="-mask %"/>
+ <file id="mask" _label="Mask image" arg="--mask %"/>
<xscreensaver-updater />
<screensaver name="vermiculate" _label="Vermiculate">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=YSg9KY-qw5o"/>
- <number id="speed" type="slider" arg="-speed %"
+ <number id="speed" type="slider" arg="--speed %"
_label="Duration" _low-label="Short" _high-label="Long"
low="1" high="1000" default="1" />
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="vfeedback" _label="VFeedback">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=I_MkW0CW4QM"/>
<hgroup>
<vgroup>
- <number id="tvcolor" type="slider" arg="-tv-color %"
+ <number id="tvcolor" type="slider" arg="--tv-color %"
_label="Color Knob" _low-label="Low" _high-label="High"
low="0" high="400" default="70"/>
- <number id="tvtint" type="slider" arg="-tv-tint %"
+ <number id="tvtint" type="slider" arg="--tv-tint %"
_label="Tint Knob" _low-label="Low" _high-label="High"
low="0" high="360" default="5"/>
- <number id="noise" type="slider" arg="-noise %"
+ <number id="noise" type="slider" arg="--noise %"
_label="Noise" _low-label="Low" _high-label="High"
low="0.0" high="0.2" default="0.02"/>
</vgroup>
<vgroup>
- <number id="tvbrightness" type="slider" arg="-tv-brightness %"
+ <number id="tvbrightness" type="slider" arg="--tv-brightness %"
_label="Brightness Knob" _low-label="Low" _high-label="High"
low="-75.0" high="100.0" default="1.5"/>
- <number id="tvcontrast" type="slider" arg="-tv-contrast %"
+ <number id="tvcontrast" type="slider" arg="--tv-contrast %"
_label="Contrast Knob" _low-label="Low" _high-label="High"
low="0" high="500" default="150"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</vgroup>
</hgroup>
<screensaver name="vidwhacker" _label="Vid Whacker">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=u8esWjcR4eI"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Duration" _low-label="2 seconds" _high-label="2 minutes"
low="2" high="120" default="5"/>
- <file id="directory" _label="Image directory" arg="-directory %"/>
+ <file id="directory" _label="Image directory" arg="--directory %"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="vigilance" _label="Vigilance" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=b7y35gr3WZ0"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="20000"
convert="invert"/>
- <number id="speed" type="slider" arg="-speed %"
+ <number id="speed" type="slider" arg="--speed %"
_label="Speed" _low-label="Slow" _high-label="Fast"
low="0.01" high="8.0" default="1.0"
convert="ratio"/>
- <number id="count" type="slider" arg="-count %"
+ <number id="count" type="slider" arg="--count %"
_label="Number of cameras" _low-label="One" _high-label="Lots"
low="1" high="30" default="5"/>
<screensaver name="vines" _label="Vines">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=IaVfFCIAUn8"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="250000" default="200000"
convert="invert"/>
- <number id="ncolors" type="slider" arg="-ncolors %"
+ <number id="ncolors" type="slider" arg="--ncolors %"
_label="Number of colors" _low-label="Two" _high-label="Many"
low="1" high="255" default="64"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="voronoi" _label="Voronoi" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=hD_8cBvknUM"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Slow" _high-label="Fast"
low="0" high="100000" default="20000"
convert="invert"/>
- <number id="points" type="slider" arg="-points %"
+ <number id="points" type="slider" arg="--points %"
_label="Points" _low-label="Few" _high-label="Many"
low="1" high="100" default="25"/>
- <number id="pointSize" type="slider" arg="-point-size %"
+ <number id="pointSize" type="slider" arg="--point-size %"
_label="Point size" _low-label="0" _high-label="50 pixels"
low="0" high="50" default="9"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</vgroup>
<vgroup>
- <number id="pointSpeed" type="slider" arg="-point-speed %"
+ <number id="pointSpeed" type="slider" arg="--point-speed %"
_label="Wander speed" _low-label="Slow" _high-label="Fast"
- low="0.0" high="10.0" default="1.0"
- convert="ratio"/>
+ low="0.0" high="10.0" default="1.0"/>
- <number id="pointDelay" type="slider" arg="-point-delay %"
+ <number id="pointDelay" type="slider" arg="--point-delay %"
_label="Insertion speed" _low-label="Slow" _high-label="Fast"
low="0.0" high="3.0" default="0.05"
convert="invert"/>
- <number id="zoomSpeed" type="slider" arg="-zoom-speed %"
+ <number id="zoomSpeed" type="slider" arg="--zoom-speed %"
_label="Zoom speed" _low-label="Slow" _high-label="Fast"
low="0.1" high="10.0" default="1.0"
convert="ratio"/>
- <number id="zoomDelay" type="slider" arg="-zoom-delay %"
+ <number id="zoomDelay" type="slider" arg="--zoom-delay %"
_label="Zoom frequency" _low-label="0" _high-label="60 seconds"
low="0" high="60" default="15"/>
</vgroup>
<screensaver name="wander" _label="Wander">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=2ZZC46Z9wJE"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="20000"
convert="invert"/>
- <number id="density" type="slider" arg="-density %"
+ <number id="density" type="slider" arg="--density %"
_label="Density" _low-label="Low" _high-label="High"
low="1" high="30" default="2"
convert="invert"/>
- <number id="reset" type="slider" arg="-reset %"
+ <number id="reset" type="slider" arg="--reset %"
_label="Duration" _low-label="Short" _high-label="Long"
low="10000" high="3000000" default="2500000"/>
</vgroup>
<vgroup>
- <number id="length" type="slider" arg="-length %"
+ <number id="length" type="slider" arg="--length %"
_label="Length" _low-label="Short" _high-label="Long"
low="100" high="100000" default="25000"/>
- <number id="advance" type="slider" arg="-advance %"
+ <number id="advance" type="slider" arg="--advance %"
_label="Color contrast" _low-label="Low" _high-label="High"
low="1" high="100" default="1"/>
<hgroup>
- <boolean id="circles" _label="Draw spots" arg-set="-circles"/>
+ <boolean id="circles" _label="Draw spots" arg-set="--circles"/>
- <number id="size" type="spinbutton" arg="-size %"
+ <number id="size" type="spinbutton" arg="--size %"
_label="Size" low="0" high="100" default="1"/>
</hgroup>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</vgroup>
</hgroup>
<screensaver name="webcollage" _label="Web Collage">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=u8esWjcR4eI"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Delay between images" _low-label="None" _high-label="30 secs"
low="0" high="30" default="2"/>
- <number id="timeout" type="slider" arg="-timeout %"
+ <number id="timeout" type="slider" arg="--timeout %"
_label="Network timeout" _low-label="2 secs" _high-label="2 min"
low="2" high="120" default="30"/>
</vgroup>
<vgroup>
- <number id="opacity" type="slider" arg="-opacity %"
+ <number id="opacity" type="slider" arg="--opacity %"
_label="Image opacity" _low-label="Transparent" _high-label="Opaque"
low="0.1" high="1.0" default="0.85"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</vgroup>
</hgroup>
-<!--
- <string id="filter" _label="Per-image filter program" arg="-filter %"/>
- <string id="filter2" _label="Overall filter program" arg="-filter2 %"/>
- <file id="dictionary" _label="Dictionary file" arg="-dictionary %"/>
- <file id="dir" _label="Image directory" arg="-directory %"/>
- -->
-
<xscreensaver-updater />
<_description>
<screensaver name="whirlwindwarp" _label="Whirlwind Warp">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=eWrRhSYzimY"/>
- <number id="points" type="slider" arg="-points %"
+ <number id="points" type="slider" arg="--points %"
_label="Particles" _low-label="Few" _high-label="Many"
low="10" high="1000" default="400"/>
- <number id="tails" type="slider" arg="-tails %"
+ <number id="tails" type="slider" arg="--tails %"
_label="Trail size" _low-label="Short" _high-label="Long"
low="1" high="50" default="8"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="whirlygig" _label="Whirlygig">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=Y2JTY7bssPM"/>
<hgroup>
- <number id="whirlies" type="spinbutton" arg="-whirlies %"
+ <number id="whirlies" type="spinbutton" arg="--whirlies %"
_label="Whirlies" low="-1" high="50" default="-1"/>
- <number id="lines" type="spinbutton" arg="-nlines %"
+ <number id="lines" type="spinbutton" arg="--nlines %"
_label="Lines" low="-1" high="50" default="-1"/>
</hgroup>
<hgroup>
<vgroup>
- <number id="xspeed" type="slider" arg="-xspeed %"
+ <number id="xspeed" type="slider" arg="--xspeed %"
_label="X speed" _low-label="Low" _high-label="High"
- low="0.0" high="10.0" default="1.0"
- convert="ratio"/>
- <number id="yspeed" type="slider" arg="-yspeed %"
+ low="0.0" high="10.0" default="1.0"/>
+ <number id="yspeed" type="slider" arg="--yspeed %"
_label="Y speed" _low-label="Low" _high-label="High"
- low="0.0" high="10.0" default="1.0"
- convert="ratio"/>
+ low="0.0" high="10.0" default="1.0"/>
</vgroup>
<vgroup>
- <number id="xamplitude" type="slider" arg="-xamplitude %"
+ <number id="xamplitude" type="slider" arg="--xamplitude %"
_label="X amplitude" _low-label="Low" _high-label="High"
- low="0.0" high="10.0" default="1.0"
- convert="ratio"/>
- <number id="yamplitude" type="slider" arg="-yamplitude %"
+ low="0.0" high="10.0" default="1.0"/>
+ <number id="yamplitude" type="slider" arg="--yamplitude %"
_label="Y amplitude" _low-label="Low" _high-label="High"
- low="0.0" high="10.0" default="1.0"
- convert="ratio"/>
+ low="0.0" high="10.0" default="1.0"/>
</vgroup>
</hgroup>
-
- <!-- #### -xmode [change] -->
-
<hgroup>
<select id="xmode">
<option id="randomx" _label="X random" />
- <option id="spinx" _label="X spin" arg-set="-xmode spin"/>
- <option id="funkyx" _label="X funky" arg-set="-xmode funky"/>
- <option id="circlex" _label="X circle" arg-set="-xmode circle"/>
- <option id="linearx" _label="X linear" arg-set="-xmode linear"/>
- <option id="testx" _label="X test" arg-set="-xmode test"/>
- <option id="funx" _label="X fun" arg-set="-xmode fun"/>
- <option id="inniex" _label="X innie" arg-set="-xmode innie"/>
- <option id="lissajousx" _label="X lissajous" arg-set="-xmode lissajous"/>
+ <option id="spinx" _label="X spin" arg-set="--xmode spin"/>
+ <option id="funkyx" _label="X funky" arg-set="--xmode funky"/>
+ <option id="circlex" _label="X circle" arg-set="--xmode circle"/>
+ <option id="linearx" _label="X linear" arg-set="--xmode linear"/>
+ <option id="testx" _label="X test" arg-set="--xmode test"/>
+ <option id="funx" _label="X fun" arg-set="--xmode fun"/>
+ <option id="inniex" _label="X innie" arg-set="--xmode innie"/>
+ <option id="lissajousx" _label="X lissajous" arg-set="--xmode lissajous"/>
</select>
<select id="ymode">
<option id="randomy" _label="Y random" />
- <option id="spiny" _label="Y spin" arg-set="-ymode spin"/>
- <option id="funkyy" _label="Y funky" arg-set="-ymode funky"/>
- <option id="circley" _label="Y circle" arg-set="-ymode circle"/>
- <option id="lineary" _label="Y linear" arg-set="-ymode linear"/>
- <option id="testy" _label="Y test" arg-set="-ymode test"/>
- <option id="funy" _label="Y fun" arg-set="-ymode fun"/>
- <option id="inniey" _label="Y innie" arg-set="-ymode innie"/>
- <option id="lissajousy" _label="Y lissajous" arg-set="-ymode lissajous"/>
+ <option id="spiny" _label="Y spin" arg-set="--ymode spin"/>
+ <option id="funkyy" _label="Y funky" arg-set="--ymode funky"/>
+ <option id="circley" _label="Y circle" arg-set="--ymode circle"/>
+ <option id="lineary" _label="Y linear" arg-set="--ymode linear"/>
+ <option id="testy" _label="Y test" arg-set="--ymode test"/>
+ <option id="funy" _label="Y fun" arg-set="--ymode fun"/>
+ <option id="inniey" _label="Y innie" arg-set="--ymode innie"/>
+ <option id="lissajousy" _label="Y lissajous" arg-set="--ymode lissajous"/>
</select>
</hgroup>
- <!-- #### -speed [1] -->
- <!-- #### -color_modifier [-1] -->
- <!-- #### -start_time [-1] -->
- <!-- #### -xoffset [1.0] -->
- <!-- #### -yoffset [1.0] -->
- <!-- #### -offset_period [1] -->
-
<hgroup>
- <boolean id="trail" _label="Leave a trail" arg-set="-trail"/>
- <boolean id="explain" _label="Explain modes" arg-set="-explain"/>
- <boolean id="wrap" _label="Wrap the screen" arg-set="-wrap"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="trail" _label="Leave a trail" arg-set="--trail"/>
+ <boolean id="explain" _label="Explain modes" arg-set="--explain"/>
+ <boolean id="wrap" _label="Wrap the screen" arg-set="--wrap"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</hgroup>
<xscreensaver-updater />
<screensaver name="winduprobot" _label="Windup Robot" gl="yes">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=RmpsDx9MuUM"/>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="20000"
convert="invert"/>
- <number id="speed" type="slider" arg="-speed %"
+ <number id="speed" type="slider" arg="--speed %"
_label="Robot speed" _low-label="Slow" _high-label="Fast"
low="0.01" high="8.0" default="1.0"
convert="ratio"/>
- <number id="count" type="slider" arg="-count %"
+ <number id="count" type="slider" arg="--count %"
_label="Number of robots" _low-label="One" _high-label="Lots"
low="1" high="100" default="25"/>
- <number id="size" type="slider" arg="-size %"
+ <number id="size" type="slider" arg="--size %"
_label="Robot size" _low-label="Tiny" _high-label="Huge"
low="0.1" high="10.0" default="1.0"
convert="ratio"/>
- <number id="opacity" type="slider" arg="-opacity %"
+ <number id="opacity" type="slider" arg="--opacity %"
_label="Robot skin transparency" _low-label="Invisible" _high-label="Solid"
low="0.0" high="1.0" default="1.0"/>
</vgroup>
<vgroup>
- <number id="talk" type="slider" arg="-talk %"
+ <number id="talk" type="slider" arg="--talk %"
_label="Word bubbles" _low-label="Never" _high-label="Often"
low="0.0" high="1.0" default="0.2"/>
<xscreensaver-text />
<hgroup>
- <boolean id="texture" _label="Chrome" arg-unset="-no-texture"/>
- <boolean id="fade" _label="Fade opacity" arg-unset="-no-fade"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="texture" _label="Chrome" arg-unset="--no-texture"/>
+ <boolean id="fade" _label="Fade opacity" arg-unset="--no-fade"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</hgroup>
</vgroup>
<screensaver name="worm" _label="Worm">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=-S26J2Ja11g"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="17000"
convert="invert"/>
- <number id="ncolors" type="slider" arg="-ncolors %"
+ <number id="ncolors" type="slider" arg="--ncolors %"
_label="Number of colors" _low-label="Two" _high-label="Many"
low="1" high="255" default="150"/>
- <number id="count" type="spinbutton" arg="-count %"
+ <number id="count" type="spinbutton" arg="--count %"
_label="Count" low="-100" high="100" default="-20"/>
- <number id="size" type="spinbutton" arg="-size %"
+ <number id="size" type="spinbutton" arg="--size %"
_label="Size" low="-20" high="20" default="-3"/>
- <!-- #### -cycles [10] -->
- <!-- #### -3d -->
-
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="wormhole" _label="Wormhole">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=jGuJU8JKxlI"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="10000"
convert="invert"/>
- <number id="zspeed" type="slider" arg="-zspeed %"
+ <number id="zspeed" type="slider" arg="--zspeed %"
_label="Star speed" _low-label="Slow" _high-label="Fast"
low="1" high="30" default="10"/>
- <number id="stars" type="slider" arg="-stars %"
+ <number id="stars" type="slider" arg="--stars %"
_label="Stars created" _low-label="Few" _high-label="Lots"
low="1" high="100" default="20"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="xanalogtv" _label="XAnalogTV">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=VmM1KkFsry0"/>
<xscreensaver-image />
</vgroup>
<vgroup>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
- <boolean id="colorbars" _label="Colorbars only" arg-set="-colorbars-only"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
+ <boolean id="colorbars" _label="Colorbars only" arg-set="--colorbars-only"/>
</vgroup>
</hgroup>
<hgroup>
<vgroup>
- <number id="tvcolor" type="slider" arg="-tv-color %"
+ <number id="tvcolor" type="slider" arg="--tv-color %"
_label="Color Knob" _low-label="Low" _high-label="High"
low="0" high="400" default="70"/>
- <number id="tvtint" type="slider" arg="-tv-tint %"
+ <number id="tvtint" type="slider" arg="--tv-tint %"
_label="Tint Knob" _low-label="Low" _high-label="High"
low="0" high="360" default="5"/>
</vgroup>
<vgroup>
- <number id="tvbrightness" type="slider" arg="-tv-brightness %"
+ <number id="tvbrightness" type="slider" arg="--tv-brightness %"
_label="Brightness Knob" _low-label="Low" _high-label="High"
low="-75.0" high="100.0" default="3.0"/>
- <number id="tvcontrast" type="slider" arg="-tv-contrast %"
+ <number id="tvcontrast" type="slider" arg="--tv-contrast %"
_label="Contrast Knob" _low-label="Low" _high-label="High"
low="0" high="1500" default="1000"/>
</vgroup>
<screensaver name="xflame" _label="XFlame">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=jUJiULU4i0k"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="10000"
convert="invert"/>
-<!-- <file id="bitmap" _label="Bitmap file" arg="-bitmap %"/> -->
-
- <!-- #### -baseline [20] -->
- <!-- #### -hspread [30] -->
- <!-- #### -vspread [97] -->
- <!-- #### -residual [99] -->
- <!-- #### -variance [50] -->
- <!-- #### -vartrend [20] -->
-
- <boolean id="bloom" _label="Enable blooming" arg-unset="-no-bloom"/>
-
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="bloom" _label="Enable blooming" arg-unset="--no-bloom"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="xjack" _label="XJack">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=wSOiSrEbxu4"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Speed" _low-label="Slow" _high-label="Fast"
low="0" high="200000" default="50000"
convert="invert"/>
- <!-- #### -font [] -->
-
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="xlyap" _label="XLyap">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=5MrEaXnhEPg"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="10000"
convert="invert"/>
- <number id="linger" type="slider" arg="-linger %"
+ <number id="linger" type="slider" arg="--linger %"
_label="Linger" _low-label="Brief" _high-label="Long"
low="0" high="10" default="5" />
- <!-- #### -builtin [-1] -->
- <!-- #### -C [1] -->
- <!-- #### -D [50] -->
- <!-- #### -L -->
- <!-- #### -M [1.0] -->
- <!-- #### -O [0] -->
- <!-- #### -R [] -->
- <!-- #### -S [50] -->
- <!-- #### -a [2.0] -->
- <!-- #### -b [2.0] -->
- <!-- #### -c [7] -->
- <!-- #### -F [10101010] -->
- <!-- #### -f [abbabaab] -->
- <!-- #### -h [] -->
- <!-- #### -i [0.65] -->
- <!-- #### -m [] -->
- <!-- #### -o [] -->
- <!-- #### -p -->
- <!-- #### -r [65000] -->
- <!-- #### -s [256] -->
- <!-- #### -v -->
- <!-- #### -w [] -->
-
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="xmatrix" _label="XMatrix">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=dSJQHm-YoWc"/>
<hgroup>
<select id="size">
- <option id="font1" _label="Small font" arg-set="-small"/>
+ <option id="font1" _label="Small font" arg-set="--small"/>
<option id="font2" _label="Large font"/>
</select>
<select id="mode">
<option id="matrix" _label="Matrix encoding"/>
- <option id="binary" _label="Binary encoding" arg-set="-mode binary"/>
- <option id="hex" _label="Hexadecimal encoding" arg-set="-mode hex"/>
- <option id="dna" _label="Genetic encoding" arg-set="-mode dna"/>
- <option id="pipe" _label="Piped ASCII text" arg-set="-mode pipe"/>
+ <option id="binary" _label="Binary encoding" arg-set="--mode binary"/>
+ <option id="hex" _label="Hexadecimal encoding" arg-set="--mode hex"/>
+ <option id="dna" _label="Genetic encoding" arg-set="--mode dna"/>
+ <option id="pipe" _label="Piped ASCII text" arg-set="--mode pipe"/>
</select>
<select id="fill">
<option id="both" _label="Synergistic algorithm"/>
- <option id="top" _label="Slider algorithm" arg-set="-insert top"/>
- <option id="bottom" _label="Expansion algorithm" arg-set="-insert bottom"/>
+ <option id="top" _label="Slider algorithm" arg-set="--insert top"/>
+ <option id="bottom" _label="Expansion algorithm" arg-set="--insert bottom"/>
</select>
</hgroup>
<hgroup>
- <boolean id="trace" _label="Run trace program" arg-unset="-no-trace"/>
- <boolean id="knock" _label="Knock knock" arg-unset="-no-knock-knock"/>
- <string id="phone" _label="Phone number" arg="-phone %"/>
+ <boolean id="trace" _label="Run trace program" arg-unset="--no-trace"/>
+ <boolean id="knock" _label="Knock knock" arg-unset="--no-knock-knock"/>
+ <string id="phone" _label="Phone number" arg="--phone %"/>
</hgroup>
<hgroup>
<vgroup>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="10000"
convert="invert"/>
- <number id="density" type="slider" arg="-density %"
+ <number id="density" type="slider" arg="--density %"
_label="Density" _low-label="Sparse" _high-label="Full"
low="1" high="100" default="75"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="xrayswarm" _label="XRaySwarm">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=e_E-k37b4Vc"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="20000"
convert="invert"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="xspirograph" _label="XSpirograph">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=XWCeQqzNavY"/>
- <number id="delay" type="slider" arg="-subdelay %"
+ <number id="delay" type="slider" arg="--subdelay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="20000"
convert="invert"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Linger" _low-label="1 second" _high-label="1 minute"
low="1" high="60" default="5"/>
- <number id="layers" type="spinbutton" arg="-layers %"
+ <number id="layers" type="spinbutton" arg="--layers %"
_label="Layers" low="1" high="10" default="2"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
<xscreensaver-updater />
<screensaver name="zoom" _label="Zoom">
- <command arg="-root"/>
+ <command arg="--root"/>
<video href="https://www.youtube.com/watch?v=LeQa9inGEKc"/>
- <number id="delay" type="slider" arg="-delay %"
+ <number id="delay" type="slider" arg="--delay %"
_label="Frame rate" _low-label="Low" _high-label="High"
low="0" high="100000" default="10000"
convert="invert"/>
- <number id="duration" type="slider" arg="-duration %"
+ <number id="duration" type="slider" arg="--duration %"
_label="Duration" _low-label="10 seconds" _high-label="10 minutes"
low="10" high="600" default="120"/>
<hgroup>
<vgroup>
- <number id="pixwidth" type="spinbutton" arg="-pixwidth %"
+ <number id="pixwidth" type="spinbutton" arg="--pixwidth %"
_label="X mag" low="2" high="100" default="40" />
- <number id="pixspacex" type="spinbutton" arg="-pixspacex %"
+ <number id="pixspacex" type="spinbutton" arg="--pixspacex %"
_label=" X border" low="0" high="10" default="2" />
- <number id="lensoffsetx" type="spinbutton" arg="-lensoffsetx %"
+ <number id="lensoffsetx" type="spinbutton" arg="--lensoffsetx %"
_label=" X lens" low="1" high="100" default="5" />
</vgroup>
<vgroup>
- <number id="pixheight" type="spinbutton" arg="-pixheight %"
+ <number id="pixheight" type="spinbutton" arg="--pixheight %"
_label="Y mag" low="2" high="100" default="40" />
- <number id="pixspacey" type="spinbutton" arg="-pixspacey %"
+ <number id="pixspacey" type="spinbutton" arg="--pixspacey %"
_label=" Y border" low="0" high="10" default="2" />
- <number id="lensoffsety" type="spinbutton" arg="-lensoffsety %"
+ <number id="lensoffsety" type="spinbutton" arg="--lensoffsety %"
_label=" Y lens" low="1" high="100" default="5" />
</vgroup>
<vgroup>
- <boolean id="lenses" _label="Lenses" arg-unset="-no-lenses"/>
- <boolean id="showfps" _label="Show frame rate" arg-set="-fps"/>
+ <boolean id="lenses" _label="Lenses" arg-unset="--no-lenses"/>
+ <boolean id="showfps" _label="Show frame rate" arg-set="--fps"/>
</vgroup>
</hgroup>
coral \- simulates coral growth, albeit somewhat slowly.
.SH SYNOPSIS
.B coral
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay2 \fInumber\fP]
-[\-delay \fInumber\fP]
-[\-density \fInumber\fP]
-[\-seeds \fInumber\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay2 \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-density \fInumber\fP]
+[\-\-seeds \fInumber\fP]
+[\-\-fps]
.SH DESCRIPTION
Simulates coral growth, albeit somewhat slowly.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay2 \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay2 \fInumber\fP
Per-frame delay, in microseconds. Default: 1000 (0.001 seconds.).
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-delay \fInumber\fP
Duration. 1 - 60. Default: 5.
.TP 8
-.B \-density \fInumber\fP
+.B \-\-density \fInumber\fP
Density. 1 - 90. Default: 25.
.TP 8
-.B \-seeds \fInumber\fP
+.B \-\-seeds \fInumber\fP
Seeds. 1 - 100. Default: 20.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
critical \- Draw a system showing self-organizing criticality
.SH SYNOPSIS
.B critical
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-delay \fIseconds\fP] [\-random \fIboolean\fP] [\-ncolors \fIint\fP] [\-offset \fIint\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP] [\-\-foreground \fIcolor\fP]
+[\-\-background \fIcolor\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-mono] [\-\-install] [\-\-visual \fIvisual\fP] [\-\-delay \fIseconds\fP] [\-\-random \fIboolean\fP] [\-\-ncolors \fIint\fP] [\-\-offset \fIint\fP]
+[\-\-fps]
.SH DESCRIPTION
The \fIcritical\fP program displays a self-organizing critical system
that gradually emerges from chaos.
.I critical
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-mono
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-mono
If on a color display, pretend we're on a monochrome display.
.TP 8
-.B \-install
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-delay \fIusecs\fP
+.B \-\-delay \fIusecs\fP
Number of microseconds to wait after drawing each line.
.TP 8
-.B \-random \fIboolean\fP
+.B \-\-random \fIboolean\fP
Whether to use randomly selected colours rather than a cycle around
the colour wheel.
.TP 8
-.B \-offset \fIinteger\fP
+.B \-\-offset \fIinteger\fP
The maximum random radius increment to use.
.TP 8
-.B \-ncolors \fIinteger\fP
+.B \-\-ncolors \fIinteger\fP
How many colors should be allocated in the color ramp (note that this
value interacts with \fIoffset\fP.)
.TP 8
-.B \-trail \fIinteger\fP
+.B \-\-trail \fIinteger\fP
Length of the trail: between 5 and 100 is nice.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
crystal \- kaleidescope.
.SH SYNOPSIS
.B crystal
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-grid]
-[\-no-cell]
-[\-centre]
-[\-nx \fInumber\fP]
-[\-ny \fInumber\fP]
-[\-count \fInumber\fP]
-[\-delay \fInumber\fP]
-[\-ncolors \fInumber\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-grid]
+[\-\-no-cell]
+[\-\-centre]
+[\-\-nx \fInumber\fP]
+[\-\-ny \fInumber\fP]
+[\-\-count \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-ncolors \fInumber\fP]
+[\-\-fps]
.SH DESCRIPTION
Moving polygons, similar to a kaleidescope (more like a kaleidescope than
the hack called `kaleid,' actually.)
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-grid | \-no-grid
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-grid | \-\-no-grid
Whether to draw grid.
.TP 8
-.B \-cell | \-no-cell
+.B \-\-cell | \-\-no-cell
Whether to draw the cell.
.TP 8
-.B \-centre | \-no-centre
+.B \-\-centre | \-\-no-centre
Whether to center on screen
.TP 8
-.B \-nx \fInumber\fP
+.B \-\-nx \fInumber\fP
Horizontal Symmetries. -10 - 10. Default: -3.
.TP 8
-.B \-ny \fInumber\fP
+.B \-\-ny \fInumber\fP
Vertical Symmetries. -10 - 10. Default: -3.
.TP 8
-.B \-count \fInumber\fP
+.B \-\-count \fInumber\fP
Count. -5000 - 5000. Default: -500.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 60000 (0.06 seconds.).
.TP 8
-.B \-ncolors \fInumber\fP
+.B \-\-ncolors \fInumber\fP
Number of Colors. Default: 100.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
cwaves \- languid sinusoidal colors
.SH SYNOPSIS
.B cwaves
-[\-display \fIhost:display.screen\fP]
-[\-foreground \fIcolor\fP]
-[\-background \fIcolor\fP]
-[\-window]
-[\-root]
-[\-mono]
-[\-install]
-[\-visual \fIvisual\fP]
-[\-delay \fIusecs\fP]
-[\-waves \fIint\fP]
-[\-colors \fIint\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-foreground \fIcolor\fP]
+[\-\-background \fIcolor\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-mono]
+[\-\-install]
+[\-\-visual \fIvisual\fP]
+[\-\-delay \fIusecs\fP]
+[\-\-waves \fIint\fP]
+[\-\-colors \fIint\fP]
+[\-\-fps]
.SH DESCRIPTION
The \fIcwaves\fP program draws a languidly-scrolling vertical field
of sinusoidal colors.
.I cwaves
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-mono
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-mono
If on a color display, pretend we're on a monochrome display.
.TP 8
-.B \-install
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-delay \fImicroseconds\fP
+.B \-\-delay \fImicroseconds\fP
How much of a delay should be introduced between steps of the animation.
Default 20000, or about 1/50th second.
.TP 8
-.B \-waves \fIint\fP
+.B \-\-waves \fIint\fP
How many cosines to add together. The more waves, the more complex
the apparent motion.
.TP 8
-.B \-colors \fIint\fP
+.B \-\-colors \fIint\fP
How many colors to use. Default 800. The more colors, the smoother the
blending will be.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
cynosure \- gentle overlapping squares screen saver.
.SH SYNOPSIS
.B cynosure
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-ncolors \fInumber\fP]
-[\-iterations \fInumber\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-ncolors \fInumber\fP]
+[\-\-iterations \fInumber\fP]
+[\-\-fps]
.SH DESCRIPTION
A hack similar to `greynetic', but less frenetic. The first implementation
was by Stephen Linhart; then Ozymandias G. Desiderata wrote a Java applet
inclusion here.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 500000 (0.50 seconds.).
.TP 8
-.B \-ncolors \fInumber\fP
+.B \-\-ncolors \fInumber\fP
Number of Colors. Default: 128.
.TP 8
-.B \-iterations \fInumber\fP
+.B \-\-iterations \fInumber\fP
Duration. 2 - 200. Default: 100.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
decayscreen \- make a screen meltdown.
.SH SYNOPSIS
.B decayscreen
-[\-display \fIhost:display.screen\fP]
-[\-window]
-[\-root]
-[\-mono]
-[\-install]
-[\-visual \fIvisual\fP]
-[\-delay \fIusecs\fP]
-[\-duration \fIsecs\fP]
-[\-mode \fImode\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-mono]
+[\-\-install]
+[\-\-visual \fIvisual\fP]
+[\-\-delay \fIusecs\fP]
+[\-\-duration \fIsecs\fP]
+[\-\-mode \fImode\fP]
+[\-\-fps]
.SH DESCRIPTION
The \fIdecayscreen\fP program creates a melting effect by randomly
shifting rectangles around the screen.
.I decayscreen
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-mono
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-mono
If on a color display, pretend we're on a monochrome display.
.TP 8
-.B \-install
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-delay \fImicroseconds\fP
+.B \-\-delay \fImicroseconds\fP
Slow it down.
.TP 8
-.B \-duration \fIseconds\fP
+.B \-\-duration \fIseconds\fP
How long to run before loading a new image. Default 120 seconds.
.TP 8
-.B \-mode \fImode\fP
+.B \-\-mode \fImode\fP
The direction in which the image should tend to slide. Legal values are
\fIrandom\fP (meaning pick one), \fIup\fP, \fIleft\fP, \fIright\fP,
\fIdown\fP, \fIupleft\fP, \fIdownleft\fP, \fIupright\fP, \fIdownright\fP,
downward), \fIstretch\fP (meaning stretch the screen downward),
and \fIfuzz\fP (meaning go blurry instead of melty).
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH "SEE ALSO"
.BR X (1),
.BR xscreensaver (1),
deco \- draw tacky 70s basement wall panelling
.SH SYNOPSIS
.B deco
-[\-display \fIhost:display.screen\fP]
-[\-foreground \fIcolor\fP]
-[\-background \fIcolor\fP]
-[\-window]
-[\-root]
-[\-mono]
-[\-install]
-[\-visual \fIvisual\fP]
-[\-delay \fIseconds\fP]
-[\-max\-depth \fIint\fP]
-[\-min\-width \fIint\fP]
-[\-min\-height \fIint\fP]
-[\-line-width \yIint\fP]
-[\-smooth\-colors]
-[\-golden\-ratio]
-[\-mondrian]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-foreground \fIcolor\fP]
+[\-\-background \fIcolor\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-mono]
+[\-\-install]
+[\-\-visual \fIvisual\fP]
+[\-\-delay \fIseconds\fP]
+[\-\-max\-depth \fIint\fP]
+[\-\-min\-width \fIint\fP]
+[\-\-min\-height \fIint\fP]
+[\-\-line-width \yIint\fP]
+[\-\-smooth\-colors]
+[\-\-golden\-ratio]
+[\-\-mondrian]
+[\-\-fps]
.SH DESCRIPTION
The \fIdeco\fP program subdivides and colors rectangles randomly.
It looks kind of like Brady-Bunch-era rec-room wall paneling.
.I deco
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-mono
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-mono
If on a color display, pretend we're on a monochrome display.
.TP 8
-.B \-install
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-delay \fIseconds\fP
+.B \-\-delay \fIseconds\fP
How long to wait before starting over. Default 5 seconds.
.TP 8
-.B \-max\-depth \fIinteger\fP
+.B \-\-max\-depth \fIinteger\fP
How deep to subdivide. Default 12.
.TP 8
-.B \-min\-width \fIinteger\fP
+.B \-\-min\-width \fIinteger\fP
.TP 8
-.B \-min\-height \fIinteger\fP
+.B \-\-min\-height \fIinteger\fP
The size of the smallest rectangle to draw. Default 20x20.
.TP 8
-.B \-line\-width \fIinteger\fP
+.B \-\-line\-width \fIinteger\fP
Width of lines drawn between rectangles. Default zero (minimal width).
.TP 8
-.B \-smooth\-colors
+.B \-\-smooth\-colors
.TP 8
-.B \-no\-smooth\-colors
+.B \-\-no\-smooth\-colors
Whether to use a smooth color palette instead of a random one.
Less jarring. Default False.
.TP 8
-.B \-golden\-ratio
+.B \-\-golden\-ratio
.TP 8
-.B \-no\-golden\-ratio
+.B \-\-no\-golden\-ratio
Whether to subdivide rectangles using the golden ratio instead of 1/2.
This ratio is supposed to be more aesthetically pleasing. Default false.
.TP 8
-.B \-mondrian
+.B \-\-mondrian
.TP 8
-.B \-no\-mondrian
+.B \-\-no\-mondrian
Whether to imitiate style of some famous paintings by Piet Mondrian.
Overrides line-width and colormap options. Default false.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
deluxe \- pulsing sequence of stars, circles, and lines.
.SH SYNOPSIS
.B deluxe
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-thickness \fInumber\fP]
-[\-count \fInumber\fP]
-[\-ncolors \fInumber\fP]
-[\-transparent]
-[\-no-db]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-thickness \fInumber\fP]
+[\-\-count \fInumber\fP]
+[\-\-ncolors \fInumber\fP]
+[\-\-transparent]
+[\-\-no-db]
+[\-\-fps]
.SH DESCRIPTION
This draws a pulsing sequence of stars, circles, and lines.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 5000 (0.01 seconds.).
.TP 8
-.B \-thickness \fInumber\fP
+.B \-\-thickness \fInumber\fP
Thickness of lines. Default: 50.
.TP 8
-.B \-count \fInumber\fP
+.B \-\-count \fInumber\fP
Number of objects. Default: 5.
.TP 8
-.B \-ncolors \fInumber\fP
+.B \-\-ncolors \fInumber\fP
Number of colors. Default: 20.
.TP 8
-.B \-transparent | \-no-transparent
+.B \-\-transparent | \-\-no-transparent
Whether to use transparency.
.TP 8
-.B \-db | \-no-db
+.B \-\-db | \-\-no-db
Whether to double buffer.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
demon \- cellular automaton.
.SH SYNOPSIS
.B demon
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-count \fInumber\fP]
-[\-cycles \fInumber\fP]
-[\-delay \fInumber\fP]
-[\-ncolors \fInumber\fP]
-[\-size \fInumber\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-count \fInumber\fP]
+[\-\-cycles \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-ncolors \fInumber\fP]
+[\-\-size \fInumber\fP]
+[\-\-fps]
.SH DESCRIPTION
A cellular automaton that starts with a random field, and organizes it into
stripes and spirals.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-count \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-count \fInumber\fP
States. 0 - 20. Default: 0.
.TP 8
-.B \-cycles \fInumber\fP
+.B \-\-cycles \fInumber\fP
Timeout. 0 - 800000. Default: 1000.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 50000 (0.05 seconds.).
.TP 8
-.B \-ncolors \fInumber\fP
+.B \-\-ncolors \fInumber\fP
Number of Colors. Default: 64.
.TP 8
-.B \-size \fInumber\fP
+.B \-\-size \fInumber\fP
Cell Size. -20 - 20. Default: -7.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
discrete \- discrete map iterative function fractal systems.
.SH SYNOPSIS
.B discrete
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-cycles \fInumber\fP]
-[\-delay \fInumber\fP]
-[\-ncolors \fInumber\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-cycles \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-ncolors \fInumber\fP]
+[\-\-fps]
.SH DESCRIPTION
More ``discrete map'' systems, including new variants of Hopalong and
Julia, and a few others.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-cycles \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-cycles \fInumber\fP
Timeout. 100 - 10000. Default: 2500.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 1000 (0.001 seconds.).
.TP 8
-.B \-ncolors \fInumber\fP
+.B \-\-ncolors \fInumber\fP
Number of Colors. Default: 100.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
distort \- distort the content of the screen in interesting ways
.SH SYNOPSIS
.B distort
-[\-root] [\-window] [\-mono] [\-install] [\-noinstall] [\-visual \fIvisual\fP]
-[\-window\-id \fIwindow\-id\fP]
-[\-delay \fIusecs\fP]
-[\-duration \fIsecs\fP]
-[\-radius \fIpixels\fP]
-[\-speed \fIint\fP]
-[\-number \fIint\fP]
-[\-swamp]
-[\-bounce]
-[\-reflect]
-[\-vortex]
-[\-magnify]
-[\-blackhole]
-[\-slow]
-[\-shm] [\-no\-shm]
-[\-fps]
+[\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-window] [\-\-mono] [\-\-install] [\-\-noinstall] [\-\-visual \fIvisual\fP]
+[\-\-window\-id \fIwindow\-id\fP]
+[\-\-delay \fIusecs\fP]
+[\-\-duration \fIsecs\fP]
+[\-\-radius \fIpixels\fP]
+[\-\-speed \fIint\fP]
+[\-\-number \fIint\fP]
+[\-\-swamp]
+[\-\-bounce]
+[\-\-reflect]
+[\-\-vortex]
+[\-\-magnify]
+[\-\-blackhole]
+[\-\-slow]
+[\-\-shm] [\-\-no\-shm]
+[\-\-fps]
.SH DESCRIPTION
The \fIdistort\fP program takes an image and lets circular zones of
distortion wander randomly around it, distorting what is under them.
.I distort
accepts the following options:
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-window
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-mono
+.B \-\-mono
If on a color display, pretend we're on a monochrome display.
.TP 8
-.B \-install
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-noinstall
+.B \-\-noinstall
Don't install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual
class or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window\-id \fIwindow\-id\fP
+.B \-\-window\-id \fIwindow\-id\fP
Specify which window id to use.
.TP 8
-.B \-delay \fIusecs\fP
+.B \-\-delay \fIusecs\fP
Specify the delay between subsequent animation frames in microseconds.
.TP 8
-.B \-duration \fIseconds\fP
+.B \-\-duration \fIseconds\fP
How long to run before loading a new image. Default 120 seconds.
.TP 8
-.B \-radius \fIpixels\fP
+.B \-\-radius \fIpixels\fP
Specify the radius of the distortion zone in pixels.
.TP 8
-.B \-speed \fIint\fP
+.B \-\-speed \fIint\fP
Specify the speed at which the distortion zone moves, where 0 is slow,
higher numbers are faster (10 is pretty fast.)
.TP 8
-.B \-number \fIint\fP
+.B \-\-number \fIint\fP
Specify the number of distortion zones.
.TP 8
-.B \-swamp
+.B \-\-swamp
Instead of letting zones wander around, let small zones pop up like
bubbles in a swamp and leave permanent distortion. \fBWARNING:\fP
-this option uses a \fIcolossal\fP amount of memory: keep the \fI\-radius\fP
-small when using \fI\-swamp\fP.
+this option uses a \fIcolossal\fP amount of memory: keep the \fI\-\-radius\fP
+small when using \fI\-\-swamp\fP.
.TP 8
-.B \-bounce
+.B \-\-bounce
Let zones wander around and bounce off the window border. This is the
default.
.TP 8
-.B \-reflect
+.B \-\-reflect
Mode of distortion that resembles reflection by a cylindrical mirror.
.TP 8
-.B \-vortex
+.B \-\-vortex
Whirlpool-shaped distortion. Way cool.
.TP 8
-.B \-magnify
+.B \-\-magnify
This mode of distortion looks like a magnifying glass.
.TP 8
-.B \-blackhole
+.B \-\-blackhole
Suck your pixels beyond the event horizon. Favourite mode of Dr
Stephen Hawking.
.TP 8
-.B \-slow
+.B \-\-slow
Make the zone wander slower.
.TP 8
-.B \-shm
+.B \-\-shm
Use shared memory extension.
.TP 8
-.B \-no\-shm
+.B \-\-no\-shm
Don't use shared memory extension.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1),
drift \- draws drifting recursive fractal cosmic flames
.SH SYNOPSIS
.B drift
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP] [\-delay \fImicroseconds\fP] [\-count \fIinteger\fP] [\-grow] [\-no\-grow] [\-liss] [\-no\-liss]
+[\-\-display \fIhost:display.screen\fP] [\-\-foreground \fIcolor\fP]
+[\-\-background \fIcolor\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-mono] [\-\-install] [\-\-visual \fIvisual\fP] [\-\-ncolors \fIinteger\fP] [\-\-delay \fImicroseconds\fP] [\-\-count \fIinteger\fP] [\-\-grow] [\-\-no\-grow] [\-\-liss] [\-\-no\-liss]
-[\-fps]
+[\-\-fps]
.SH DESCRIPTION
The \fIdrift\fP program draws drifting recursive fractal cosmic flames
.SH OPTIONS
.I drift
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-mono
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-mono
If on a color display, pretend we're on a monochrome display.
.TP 8
-.B \-install
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-ncolors \fIinteger\fP
+.B \-\-ncolors \fIinteger\fP
How many colors should be used (if possible). Default 200.
The colors used cycle through the hue, making N stops around
the color wheel.
.TP 8
-.B \-count \fIinteger\fP
+.B \-\-count \fIinteger\fP
.TP 8
-.B \-grow
+.B \-\-grow
.TP 8
-.B \-no\-grow
+.B \-\-no\-grow
Whether fractals should grow; otherwise, they are animated.
.TP 8
-.B \-liss
+.B \-\-liss
.TP 8
-.B \-no\-liss
+.B \-\-no\-liss
Whether we should use lissajous figures to get points.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR flame (MANSUFFIX),
.BR X (1),
epicycle \- draws a point moving around a circle which moves around a cicle which...
.SH SYNOPSIS
.B epicycle
-[\-display \fIhost:display.screen\fP] [\-root] [\-window] [\-mono] [\-install] [\-noinstall] [\-visual \fIviz\fP] [\-colors \fIN\fP] [\-foreground \fIname\fP] [\-color\-shift \fIN\fP] [\-delay \fImicroseconds\fP] [\-holdtime \fIseconds\fP] [\-linewidth \fIN\fP] [\-min_circles \fIN\fP] [\-max_circles \fIN\fP] [\-min_speed \fInumber\fP] [\-max_speed \fInumber\fP] [\-harmonics \fIN\fP] [\-timestep \fInumber\fP] [\-divisor_poisson \fIprobability\fP] [\-size_factor_min \fInumber\fP] [\-size_factor_max \fInumber\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-window] [\-\-mono] [\-\-install] [\-\-noinstall] [\-\-visual \fIviz\fP] [\-\-colors \fIN\fP] [\-\-foreground \fIname\fP] [\-\-color\-shift \fIN\fP] [\-\-delay \fImicroseconds\fP] [\-\-holdtime \fIseconds\fP] [\-\-linewidth \fIN\fP] [\-\-min_circles \fIN\fP] [\-\-max_circles \fIN\fP] [\-\-min_speed \fInumber\fP] [\-\-max_speed \fInumber\fP] [\-\-harmonics \fIN\fP] [\-\-timestep \fInumber\fP] [\-\-divisor_poisson \fIprobability\fP] [\-\-size_factor_min \fInumber\fP] [\-\-size_factor_max \fInumber\fP]
+[\-\-fps]
.SH DESCRIPTION
The epicycle program draws the path traced out by a point on the edge
of a circle. That circle rotates around a point on the rim of another
command-line options or X resources.
.SH OPTIONS
.TP 8
-.B \-display \fIhost:display.screen\fP
+.B \-\-display \fIhost:display.screen\fP
Specifies which X display we should use (see the section DISPLAY NAMES in
.BR X (1)
for more information about this option).
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-window
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-mono
+.B \-\-mono
If on a color display, pretend we're on a monochrome display.
If we're on a mono display, we have no choice.
.TP 8
-.B \-install
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-noinstall
+.B \-\-noinstall
Don't install a private colormap for the window.
.TP 8
-.B \-visual \fIviz\fP
+.B \-\-visual \fIviz\fP
Specify which visual to use. Legal values are the name of a visual
class, or the id number (decimal or hex) of a specific visual.
Possible choices include
is consulted to obtain the required visual.
.RE
.TP 8
-.B \-colors \fIN\fP
+.B \-\-colors \fIN\fP
How many colors should be used (if possible). The colors are chosen
randomly.
.TP 8
-.B \-foreground \fIname\fP
+.B \-\-foreground \fIname\fP
With
-.BR \-mono ,
+.BR \-\-mono ,
this option selects the foreground colour.
.TP 8
-.B \-delay \fImicroseconds\fP
+.B \-\-delay \fImicroseconds\fP
Specifies the delay between drawing successive line segments of the
path. If you do not specify
.BR -sync ,
some X servers may batch up several drawing operations together,
producing a less smooth effect. This is more likely to happen
in monochrome mode (on monochrome servers or when
-.B \-mono
+.B \-\-mono
is specified).
.TP 8
-.B \-holdtime \fIseconds\fP
+.B \-\-holdtime \fIseconds\fP
When the figure is complete,
.I epicycle
pauses this number of seconds.
.TP 8
-.B \-linewidth \fIN\fP
+.B \-\-linewidth \fIN\fP
Width in pixels of the body's track. Specifying values greater than
one may cause slower drawing. The fastest value is usually zero,
meaning one pixel.
.TP 8
-.B \-min_circles \fIN\fP
+.B \-\-min_circles \fIN\fP
Smallest number of epicycles in the figure.
.TP 8
-.B \-max_circles \fIN\fP
+.B \-\-max_circles \fIN\fP
Largest number of epicycles in the figure.
.TP 8
-.B \-min_speed \fInumber\fP
+.B \-\-min_speed \fInumber\fP
Smallest possible value for the base speed of revolution of the
epicycles. The actual speeds of the epicycles vary from this down
to
.IB "min_speed / harmonics" .
.TP 8
-.B \-max_speed \fInumber\fP
+.B \-\-max_speed \fInumber\fP
Smallest possible value for the base speed of revolution of the
epicycles.
.TP 8
-.B \-harmonics \fIN\fP
+.B \-\-harmonics \fIN\fP
Number of possible harmonics; the larger this value is, the greater
the possible variety of possible speeds of epicycle.
.TP 8
-.B \-timestep \fInumber\fP
+.B \-\-timestep \fInumber\fP
Decreasing this value will reduce the distance the body moves for
each line segment, possibly producing a smoother figure. Increasing
it may produce faster results.
.TP 8
-.B \-divisor_poisson \fIprobability\fP
+.B \-\-divisor_poisson \fIprobability\fP
Each epicycle rotates at a rate which is a factor of the base speed.
The speed of each epicycle is the base speed divided by some integer
between 1 and the value of the
-.B \-harmonics
+.B \-\-harmonics
option. This integer is decided by starting at 1 and tossing
a biased coin. For each consecutive head, the value is incremented by
one. The integer will not be incremented above the value of the
-.B \-harmonics
+.B \-\-harmonics
option. The argument of this option decides the bias of the coin; it
is the probability that that coin will produce a head at any given toss.
.TP 8
-.B \-size_factor_min \fInumber\fP
+.B \-\-size_factor_min \fInumber\fP
Epicycles are always at least this factor smaller than their
parents.
.TP 8
-.B \-size_factor_max \fInumber\fP
+.B \-\-size_factor_max \fInumber\fP
Epicycles are never more than this factor smaller than their parents.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
-.B \-timestep
+.B \-\-timestep
option multiplied by the timestepCoarseFactor resource. The default
value of 1 will almost always work fast enough and so this resource
is not available as a command-line option.
The colour selection is re-done for every figure. This may
generate too much network traffic for this program to work well
over slow or long links.
+.SH ENVIRONMENT
+.PP
+.TP 8
+.B DISPLAY
+to get the default host and display number.
+.TP 8
+.B XENVIRONMENT
+to get the name of a resource file that overrides the global resources
+stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
+.SH SEE ALSO
+.BR X (1),
+.BR xscreensaver (1)
.SH COPYRIGHT
Copyright \(co 1998, James Youngman. Permission to use, copy, modify,
distribute, and sell this software and its documentation for any purpose is
Eruption \- eruption of pieces of hot volcanic rock
.SH SYNOPSIS
.B Eruption
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-ncolors \fInumber\fP]
-[\-nParticles \fInumber\fP]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-ncolors \fInumber\fP]
+[\-\-nParticles \fInumber\fP]
[\-Heat \fInumber\fP]
[\-Cooling \fInumber\fP]
[\-Gravity \fInumber\fP]
-[\-delay \fInumber\fP]
-[\-cycles \fInumber\fP]
-[\-fps]
+[\-\-delay \fInumber\fP]
+[\-\-cycles \fInumber\fP]
+[\-\-fps]
.SH DESCRIPTION
This hack creates an eruption of pieces of hot volcanic rock.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-ncolors \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-ncolors \fInumber\fP
Number of Colors. Default: 256.
.TP 8
-.B \-particles \fInumber\fP
+.B \-\-particles \fInumber\fP
Number of Particles. Default: 300.
.TP 8
-.B \-cooloff \fInumber\fP
+.B \-\-cooloff \fInumber\fP
Eruption Cooloff. Default: 2.
.TP 8
-.B \-heat \fInumber\fP
+.B \-\-heat \fInumber\fP
Heat of Eruption. Default: 256.
.TP 8
-.B \-gravity \fInumber\fP
+.B \-\-gravity \fInumber\fP
Gravity. Default: 1.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 5000 (0.01 seconds.).
.TP 8
-.B \-cycles \fInumber\fP
+.B \-\-cycles \fInumber\fP
Duration. 10 - 3000. Default: 80.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1),
euler2d \- two dimensional incompressible inviscid fluid flow.
.SH SYNOPSIS
.B euler2d
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-count \fInumber\fP]
-[\-eulertail \fInumber\fP]
-[\-cycles \fInumber\fP]
-[\-ncolors \fInumber\fP]
-[\-delay \fInumber\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-count \fInumber\fP]
+[\-\-eulertail \fInumber\fP]
+[\-\-cycles \fInumber\fP]
+[\-\-ncolors \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-fps]
.SH DESCRIPTION
Simulates two dimensional incompressible inviscid fluid flow.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-count \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-count \fInumber\fP
Particles. 2 - 5000. Default: 1024.
.TP 8
-.B \-eulertail \fInumber\fP
+.B \-\-eulertail \fInumber\fP
Trail Length. 2 - 500. Default: 10.
.TP 8
-.B \-cycles \fInumber\fP
+.B \-\-cycles \fInumber\fP
Duration. 100 - 5000. Default: 3000.
.TP 8
-.B \-ncolors \fInumber\fP
+.B \-\-ncolors \fInumber\fP
Number of Colors. Default: 64.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 10000 (0.01 seconds.).
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
fadeplot \- draws a waving ribbon following a sinusoidal path.
.SH SYNOPSIS
.B fadeplot
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-count \fInumber\fP]
-[\-cycles \fInumber\fP]
-[\-delay \fInumber\fP]
-[\-ncolors \fInumber\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-count \fInumber\fP]
+[\-\-cycles \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-ncolors \fInumber\fP]
+[\-\-fps]
.SH DESCRIPTION
Draws what looks like a waving ribbon following a sinusoidal path.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-count \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-count \fInumber\fP
Count. 0 - 20. Default: 10.
.TP 8
-.B \-cycles \fInumber\fP
+.B \-\-cycles \fInumber\fP
How many frames until the shape changes. Default: 1500.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 30000 (0.03 seconds.).
.TP 8
-.B \-ncolors \fInumber\fP
+.B \-\-ncolors \fInumber\fP
Number of colors. Default: 64.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
fiberlamp \- Fiber Optic Lamp
.SH SYNOPSIS
.B fiberlamp
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-count \fInumber\fP]
-[\-cycles \fInumber\fP]
-[\-delay \fInumber\fP]
-[\-ncolors \fInumber\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-count \fInumber\fP]
+[\-\-cycles \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-ncolors \fInumber\fP]
+[\-\-fps]
.SH DESCRIPTION
Displays a Fiber Optic Lamp.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-count \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-count \fInumber\fP
Number of Fibers. 10 - 500. Default: 500.
.TP 8
-.B \-cycles \fInumber\fP
+.B \-\-cycles \fInumber\fP
Number of cycles before the lamp is knocked sideways. 100 - 10000.
Default: 10000.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 10000 (0.01 seconds.).
.TP 8
-.B \-ncolors \fInumber\fP
+.B \-\-ncolors \fInumber\fP
Number of Colors. Default: 64.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
filmleader \- screen saver.
.SH SYNOPSIS
.B filmleader
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-tv-color \fInumber\fP]
-[\-tv-tint \fInumber\fP]
-[\-noise \fInumber\fP]
-[\-tv-brightness \fInumber\fP]
-[\-tv-contrast \fInumber\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-tv-color \fInumber\fP]
+[\-\-tv-tint \fInumber\fP]
+[\-\-noise \fInumber\fP]
+[\-\-tv-brightness \fInumber\fP]
+[\-\-tv-contrast \fInumber\fP]
+[\-\-fps]
.SH DESCRIPTION
Displays a looping countdown based on the SMPTE Universal Film leader on a
simulation of an old analog television.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-tv-color \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-tv-color \fInumber\fP
Color Knob. 0 - 1000. Default: 70.
.TP 8
-.B \-tv-tint \fInumber\fP
+.B \-\-tv-tint \fInumber\fP
Tint Knob. 0 - 100. Default: 5.
.TP 8
-.B \-noise \fInumber\fP
+.B \-\-noise \fInumber\fP
Noise. 0.0 - 0.2. Default: 0.04.
.TP 8
-.B \-tv-brightness \fInumber\fP
+.B \-\-tv-brightness \fInumber\fP
Brightness Knob. 0 - 200. Default: 150.
.TP 8
-.B \-tv-contrast \fInumber\fP
+.B \-\-tv-contrast \fInumber\fP
Contrast Knob. 0 - 1500. Default: 1000.
.TP 8
-.B \-fps | \-no-fps
+.B \-\-fps | \-\-no-fps
Whether to show a frames-per-second display at the bottom of the screen.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
fireworkx \- pyrotechnic explosions eye-candy.
.SH SYNOPSIS
.B fireworkx
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-verbose]
-[\-noflash]
-[\-shoot]
-[\-delay \fInumber\fP]
-[\-maxlife \fInumber\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-verbose]
+[\-\-noflash]
+[\-\-shoot]
+[\-\-delay \fInumber\fP]
+[\-\-maxlife \fInumber\fP]
+[\-\-fps]
.SH DESCRIPTION
Animates explosions.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-noflash
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-noflash
Turn off light flash effect. (Runs faster)
.TP 8
-.B \-shoot
+.B \-\-shoot
Fire shells up using mortar.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-delay \fInumber\fP
Delay between frames. In microseconds. (Default: 10000)
.TP 8
-.B \-maxlife \fInumber\fP
+.B \-\-maxlife \fInumber\fP
Maximum decay period for an explosion. (Range: 0-100)
.TP 8
-.B \-verbose
+.B \-\-verbose
For scientific research purposes only..!
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
flag \- draws a waving flag, containing text or an image
.SH SYNOPSIS
.B flag
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP] [\-delay \fImicroseconds\fP] [\-cycles \fIinteger\fP] [\-size \fIinteger\fP] [\-text \fIstring\fP] [\-font \fIfont\fP] [\-bitmap \fIxbm-file\fP]
+[\-\-display \fIhost:display.screen\fP] [\-\-foreground \fIcolor\fP]
+[\-\-background \fIcolor\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-mono] [\-\-install] [\-\-visual \fIvisual\fP] [\-\-ncolors \fIinteger\fP] [\-\-delay \fImicroseconds\fP] [\-\-cycles \fIinteger\fP] [\-\-size \fIinteger\fP] [\-\-text \fIstring\fP] [\-\-font \fIfont\fP] [\-\-bitmap \fIxbm-file\fP]
-[\-fps]
+[\-\-fps]
.SH DESCRIPTION
The \fIflag\fP program draws a waving flag that contains text or a bitmap.
.SH OPTIONS
.I flag
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-mono
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-mono
If on a color display, pretend we're on a monochrome display.
.TP 8
-.B \-install
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-ncolors \fIinteger\fP
+.B \-\-ncolors \fIinteger\fP
How many colors should be used (if possible). Default 200.
.TP 8
-.B \-cycles \fIinteger\fP
+.B \-\-cycles \fIinteger\fP
.TP 8
-.B \-count \fIinteger\fP
+.B \-\-count \fIinteger\fP
.TP 8
-.B \-size \fIinteger\fP
+.B \-\-size \fIinteger\fP
How large the pixels in the flag should be, from 1 to 8.
If this is a negative number, the pixel size is chosen randomly
from the range 1 to -size. Default -7.
.TP 8
-.B \-text \fItext\fP
+.B \-\-text \fItext\fP
The text to display in the flag. Multiple lines of text are allowed;
the lines will be displayed centered atop one another. Default: none.
If the text is the magic string \fI"(default)"\fP, then the text used
will be the local machine name; a newline; and the local OS version.
.TP 8
-.B \-bitmap \fIxbm-file\fP
+.B \-\-bitmap \fIxbm-file\fP
The bitmap to display in the flag; this must be an XBM file (color XPMs
are not allowed.) Default: none. If the bitmap is the magic
string \fI"(default)"\fP, then the bitmap used will be a charming
little picture of J. R. "Bob" Dobbs.
-If neither \fI\-text\fP nor \fI\-bitmap\fP are specified, then either
+If neither \fI\-\-text\fP nor \fI\-\-bitmap\fP are specified, then either
the builtin text or the builtin bitmap will be chosen randomly.
.TP 8
-.B \-font \fIfont\fP
+.B \-\-font \fIfont\fP
The font in which to draw the text; the default is
"-*-helvetica-bold-r-*-240-*".
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1),
.SH AUTHOR
Charles Vidal <vidalc@univ-mlv.fr>, 1996.
-Ability to run standalone or with \fIxscreensaver\fP, and the \-text
-and \-bitmap options, added by Jamie Zawinski <jwz@jwz.org>, 24-May-97.
+Ability to run standalone or with \fIxscreensaver\fP, and the \-\-text
+and \-\-bitmap options, added by Jamie Zawinski <jwz@jwz.org>, 24-May-97.
flame \- draw weird cosmic fractals
.SH SYNOPSIS
.B flame
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-colors \fIinteger\fP] [\-iterations \fIinteger\fP] [\-points \fIinteger\fP] [\-delay \fImicroseconds\fP] [\-delay2 \fImicroseconds\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP] [\-\-foreground \fIcolor\fP]
+[\-\-background \fIcolor\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-mono] [\-\-install] [\-\-visual \fIvisual\fP] [\-\-colors \fIinteger\fP] [\-\-iterations \fIinteger\fP] [\-\-points \fIinteger\fP] [\-\-delay \fImicroseconds\fP] [\-\-delay2 \fImicroseconds\fP]
+[\-\-fps]
.SH DESCRIPTION
The \fIflame\fP program generates colorful fractal displays.
.SH OPTIONS
.I flame
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-mono
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-mono
If on a color display, pretend we're on a monochrome display.
.TP 8
-.B \-install
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-colors \fIinteger\fP
+.B \-\-colors \fIinteger\fP
How many colors should be used (if possible). Default 64.
.TP 8
-.B \-iterations \fIinteger\fP
+.B \-\-iterations \fIinteger\fP
How many fractals to generate. Default 25.
.TP 8
-.B \-points \fIinteger\fP
+.B \-\-points \fIinteger\fP
How many pixels to draw for each fractal. Default 10000.
.TP 8
-.B \-delay \fImicroseconds\fP
+.B \-\-delay \fImicroseconds\fP
How long we should wait between drawing each fractal. Default 50000,
or about 1/20th second.
.TP 8
-.B \-delay2 \fImicroseconds\fP
+.B \-\-delay2 \fImicroseconds\fP
How long we should wait before clearing the screen when each run ends.
Default 2000000, or two seconds.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1),
flow \- strange attractors.
.SH SYNOPSIS
.B flow
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-count \fInumber\fP]
-[\-cycles \fInumber\fP]
-[\-periodic|\-no\-periodic]
-[\-search|\-no\-search]
-[\-rotate|\-no\-rotate]
-[\-ride|\-no\-ride]
-[\-box|\-no\-box]
-[\-dbuf|\-no\-dbuf]
-[\-ncolors \fInumber\fP]
-[\-delay \fInumber\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-count \fInumber\fP]
+[\-\-cycles \fInumber\fP]
+[\-\-periodic|\-\-no\-periodic]
+[\-\-search|\-\-no\-search]
+[\-\-rotate|\-\-no\-rotate]
+[\-\-ride|\-\-no\-ride]
+[\-\-box|\-\-no\-box]
+[\-\-dbuf|\-\-no\-dbuf]
+[\-\-ncolors \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-fps]
.SH DESCRIPTION
Strange attractors formed of flows in a 3D differential equation phase
space. Features the popular attractors described by \fBLorentz\fP,
entirely new attractors by itself.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-count \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-count \fInumber\fP
Number of particles in the flow. Default: 3000
.TP 8
-.B \-size \fInumber\fP
+.B \-\-size \fInumber\fP
Length of particle trails. Negative values indicate
randomness. The computational load of a given flow depends on
(particle count) * (trail length). Default: -10
.TP 8
-.B \-cycles \fInumber\fP
+.B \-\-cycles \fInumber\fP
Timeout before changing objects. 0 - 800000. Default: 10000.
.TP 8
-.B \-periodic
+.B \-\-periodic
.TP 8
-.B \-no\-periodic
+.B \-\-no\-periodic
turn on/off periodic attractors. These are flows in 2 dependent
variables, with a periodic dependence on a third independent variable
(eg time). Flow will sometimes choose to start all the particles in
the same phase to illustrate the flow's cross-section. Default:
on
.TP 8
-.B \-search
+.B \-\-search
.TP 8
-.B \-no\-search
+.B \-\-no\-search
turn on/off search for new attractors. If this is enabled, a fraction
of the computing cycles is directed to searching a 60-dimensional
parameter space for new strange attractors. If periodic flows are
and since the parameters are not recorded, you'll probably never see
them again! Default: on
.TP 8
-.B \-rotate
+.B \-\-rotate
.TP 8
-.B \-no\-rotate
+.B \-\-no\-rotate
turn on/off rotating around attractor. Default: on
.TP 8
-.B \-ride
+.B \-\-ride
.TP 8
-.B \-no\-ride
+.B \-\-no\-ride
turn on/off ride in the flow. Default: on
If both -rotate and -ride are enabled the viewpoint will occasionally
fly between the two views.
.TP 8
-.B \-box
+.B \-\-box
.TP 8
-.B \-no\-box
+.B \-\-no\-box
turn on/off bounding box. Default: on
.TP 8
-.B \-dbuf
+.B \-\-dbuf
.TP 8
-.B \-no\-dbuf
+.B \-\-no\-dbuf
turn on/off double buffering. If Flow runs slowly in full screen, but
fast in a smaller window (eg on old graphics cards with too little
memory), try turning this option off. Default: on
.TP 8
-.B \-ncolors \fInumber\fP
+.B \-\-ncolors \fInumber\fP
Number of Colors. Default: 200.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 10000 (0.01 seconds.).
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
XFreeGC (dpy, state->draw_gc);
XFreeGC (dpy, state->draw_gc2);
XFreeGC (dpy, state->erase_gc);
- XftFontClose (state->dpy, state->font);
- XftDrawDestroy (state->xftdraw);
+ if (state->font)
+ XftFontClose (state->dpy, state->font);
+ if (state->xftdraw)
+ XftDrawDestroy (state->xftdraw);
free (state->m);
free (state->r);
free (state->vx);
fluidballs \- the physics of bouncing balls.
.SH SYNOPSIS
.B fluidballs
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-count \fInumber\fP]
-[\-size \fInumber\fP]
-[\-gravity \fInumber\fP]
-[\-wind \fInumber\fP]
-[\-elasticity \fInumber\fP]
-[\-delay \fInumber\fP]
-[\-nonrandom]
-[\-no-shake]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-count \fInumber\fP]
+[\-\-size \fInumber\fP]
+[\-\-gravity \fInumber\fP]
+[\-\-wind \fInumber\fP]
+[\-\-elasticity \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-nonrandom]
+[\-\-no-shake]
+[\-\-fps]
.SH DESCRIPTION
Models the physics of bouncing balls, or of particles in a gas or fluid,
depending on the settings. If "Shake Box" is selected, then every now and
to keep the settled balls in motion.)
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-count \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-count \fInumber\fP
How many balls to display. Default: 300.
.TP 8
-.B \-size \fInumber\fP
+.B \-\-size \fInumber\fP
Maximum size of each ball. Default: 25.
.TP 8
-.B \-gravity \fInumber\fP
+.B \-\-gravity \fInumber\fP
Coefficient of gravity. Useful values are < 0.1. Default: 0.01.
.TP 8
-.B \-wind \fInumber\fP
+.B \-\-wind \fInumber\fP
Wind. Useful values are < 0.1. Default: 0.00.
.TP 8
-.B \-elasticity \fInumber\fP
+.B \-\-elasticity \fInumber\fP
Coefficient of elasticity. Useful values are 0.2 to 1.0. Default: 0.97.
Lower numbers make less bouncy balls.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 10000 (0.01 seconds.).
.TP 8
-.B \-nonrandom
+.B \-\-nonrandom
Make all balls be the same size.
.TP 8
-.B \-no-nonrandom
+.B \-\-no-nonrandom
Make the balls be random sizes. Default.
.TP 8
-.B \-shake | \-no-shake
+.B \-\-shake | \-\-no-shake
Whether to shake the box if the system seems to have settled down.
"Shake" means "change the direction of Down."
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
fontglide \- characters float onto the screen to form words
.SH SYNOPSIS
.B fontglide
-[\-display \fIhost:display.screen\fP] [\-window] [\-root] [\-install]
-[\-visual \fIvisual\fP]
-[\-delay \fIusecs\fP]
-[\-scroll\fP]
-[\-page\fP]
-[\-random\fP]
-[\-speed \fIfloat\fP]
-[\-linger \fIfloat\fP]
-[\-program \fIsh-command\fP]
-[\-font \fIfont-name\fP]
-[\-bw \fIint\fP]
-[\-trails]
-[\-db]
-[\-debug]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-install]
+[\-\-visual \fIvisual\fP]
+[\-\-delay \fIusecs\fP]
+[\-\-scroll\fP]
+[\-\-page\fP]
+[\-\-random\fP]
+[\-\-speed \fIfloat\fP]
+[\-\-linger \fIfloat\fP]
+[\-\-program \fIsh-command\fP]
+[\-\-font \fIfont-name\fP]
+[\-\-bw \fIint\fP]
+[\-\-trails]
+[\-\-db]
+[\-\-debug]
+[\-\-fps]
.SH DESCRIPTION
The \fIfontglide\fP program reads text from a subprocess and puts it on
the screen using large characters that glide in from the edges,
.I fontglide
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-install
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP\fP
+.B \-\-visual \fIvisual\fP\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-delay \fIusecs\fP
+.B \-\-delay \fIusecs\fP
The delay between steps of the animation, in microseconds: default 10000.
.TP 8
-.B \-page
+.B \-\-page
With this option, a page full of text will glide in, and disperse.
.TP 8
-.B \-scroll
+.B \-\-scroll
With this option, sentences will scroll by from right to left.
.TP 8
-.B \-random
-The default is to pick randomly between \fI\-page\fP and \fI\-scroll\fP.
+.B \-\-random
+The default is to pick randomly between \fI\-\-page\fP and \fI\-\-scroll\fP.
.TP 8
-.B \-speed \fIfloat\fP
+.B \-\-speed \fIfloat\fP
How fast to animate; 2 means twice as fast, 0.5 means half as fast.
Default 1.0.
.TP 8
-.B \-linger \fIfloat\fP
-How long to leave the assembled text on the screen in \fI\-page\fP mode;
+.B \-\-linger \fIfloat\fP
+How long to leave the assembled text on the screen in \fI\-\-page\fP mode;
2 means twice as long, 0.5 means half as long. Default 1.0. (The more
words there are on the screen, the longer it lingers.)
.TP 8
-.B \-program \fIsh-command\fP
+.B \-\-program \fIsh-command\fP
The command to run to generate the text to display. This option may be
any string acceptable to /bin/sh. The program will be run at the end of
a pipe, and any words that it prints to \fIstdout\fP will end up on
it produced. Default:
.BR xscreensaver\-text (MANSUFFIX).
.TP 8
-.B \-font\fP \fIstring\fP
+.B \-\-font\fP \fIstring\fP
The base font pattern to use when loading fonts. The default is to search
for any Latin1 scalable proportional fonts on the system. Once a base font
is selected, it will be loaded in a random size.
.TP 8
-.B \-bw \fIint\fP
+.B \-\-bw \fIint\fP
How thick an outline to draw around the characters. Default 2 pixels.
.TP 8
-.B \-trails\fP
+.B \-\-trails\fP
Leave "vapor trails" behind the moving text. Default off.
.TP 8
-.B \-no-db\fP
+.B \-\-no-db\fP
Turn off double-buffering. It may be faster, but will flicker.
.TP 8
-.B \-debug\fP
+.B \-\-debug\fP
Draw some boxes showing character metrics, and print the name of the
current font to stderr.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR xscreensaver (1),
.BR xscreensaver\-text (MANSUFFIX),
forest \- draws a fractal forest
.SH SYNOPSIS
.B forest
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP] [\-delay \fImicroseconds\fP]
+[\-\-display \fIhost:display.screen\fP] [\-\-foreground \fIcolor\fP]
+[\-\-background \fIcolor\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-mono] [\-\-install] [\-\-visual \fIvisual\fP] [\-\-ncolors \fIinteger\fP] [\-\-delay \fImicroseconds\fP]
-[\-fps]
+[\-\-fps]
.SH DESCRIPTION
The \fIforest\fP program draws a fractal forest.
.SH OPTIONS
.I forest
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-mono
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-mono
If on a color display, pretend we're on a monochrome display.
.TP 8
-.B \-install
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-ncolors \fIinteger\fP
+.B \-\-ncolors \fIinteger\fP
How many colors should be used (if possible). Default 20.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1),
fuzzyflakes \- falling snowflakes/flower shapes
.SH SYNOPSIS
.B fuzzyflakes
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP]
-[\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install]
-[\-visual \fIvisual\fP]
-[\-delay \fIusecs\fP]
-[\-speed \fIint\fP]
-[\-arms \fIint\fP]
-[\-thickness \fIint\fP]
-[\-bthickness \fIint\fP]
-[\-radius \fIint\fP]
-[\-layers \fIint\fP]
-[\-density \fIint\fP]
-[\-no-db]
+[\-\-display \fIhost:display.screen\fP] [\-\-foreground \fIcolor\fP]
+[\-\-background \fIcolor\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-mono] [\-\-install]
+[\-\-visual \fIvisual\fP]
+[\-\-delay \fIusecs\fP]
+[\-\-speed \fIint\fP]
+[\-\-arms \fIint\fP]
+[\-\-thickness \fIint\fP]
+[\-\-bthickness \fIint\fP]
+[\-\-radius \fIint\fP]
+[\-\-layers \fIint\fP]
+[\-\-density \fIint\fP]
+[\-\-no-db]
(\-color \fIstring\fP)
(\-random-colors)
-[\-fps]
+[\-\-fps]
.SH DESCRIPTION
The
.I fuzzyflakes
.I fuzzyflakes
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-mono
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-mono
If on a color display, pretend we're on a monochrome display.
.TP 8
-.B \-install
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-delay \fIusecs\fP
+.B \-\-delay \fIusecs\fP
The delay between steps of the animation, in microseconds. Default: 250000.
.TP 8
-.B \-speed \fIint\fP
+.B \-\-speed \fIint\fP
How fast, 1-50. Default 10.
.TP 8
-.B \-arms \fIint\fP
+.B \-\-arms \fIint\fP
How many arms on the flakes; default 5.
.TP 8
-.B \-thickness \fIint\fP
+.B \-\-thickness \fIint\fP
How thick to make the lines; default 10 pixels.
.TP 8
-.B \-bthickness \fIint\fP
+.B \-\-bthickness \fIint\fP
How thick to make the borders; default 3 pixels.
.TP 8
-.B \-radius \fIint\fP
+.B \-\-radius \fIint\fP
Radius of the objects; default 20 pixels.
.TP 8
-.B \-layers \fIint\fP
+.B \-\-layers \fIint\fP
How many layers of objects; default 3.
.TP 8
-.B \-density \fIint\fP
+.B \-\-density \fIint\fP
Default 5.
.TP 8
-.B \-no-db
+.B \-\-no-db
Disable double-buffering.
.TP 8
-.B \-color \fIstring\fP
+.B \-\-color \fIstring\fP
The base color for the color scheme. Typed as a hexadecimal triplet
with or with out the leading #. ie. fa4563 & #43cd12 are both acceptable.
If the saturation of you color is too low (<0.03) the random color
generator will kick in.
The default color is #efbea5
.TP 8
-.B \-random-colors
+.B \-\-random-colors
This enables the random color generation. It is disabled by default.
It overrides anything from -color
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
galaxy \- draws spinning galaxies
.SH SYNOPSIS
.B galaxy
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP] [\-delay \fImicroseconds\fP] [\-cycles \fIinteger\fP] [\-count \fIinteger\fP] [\-size \fIinteger\fP] [\-tracks] [\-no\-tracks] [\-spin] [\-no\-spin]
+[\-\-display \fIhost:display.screen\fP] [\-\-foreground \fIcolor\fP]
+[\-\-background \fIcolor\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-mono] [\-\-install] [\-\-visual \fIvisual\fP] [\-\-ncolors \fIinteger\fP] [\-\-delay \fImicroseconds\fP] [\-\-cycles \fIinteger\fP] [\-\-count \fIinteger\fP] [\-\-size \fIinteger\fP] [\-\-tracks] [\-\-no\-tracks] [\-\-spin] [\-\-no\-spin]
-[\-fps]
+[\-\-fps]
.SH DESCRIPTION
The \fIgalaxy\fP program draws spinning galaxies.
.SH OPTIONS
.I galaxy
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-mono
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-mono
If on a color display, pretend we're on a monochrome display.
.TP 8
-.B \-install
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-ncolors \fIinteger\fP
+.B \-\-ncolors \fIinteger\fP
How many colors should be used (if possible). Default 64.
The colors used cycle through the hue, making N stops around
the color wheel.
.TP 8
-.B \-cycles \fIinteger\fP
+.B \-\-cycles \fIinteger\fP
.TP 8
-.B \-count \fIinteger\fP
+.B \-\-count \fIinteger\fP
.TP 8
-.B \-size \fIinteger\fP
+.B \-\-size \fIinteger\fP
.TP 8
-.B \-tracks
+.B \-\-tracks
.TP 8
-.B \-no\-tracks
+.B \-\-no\-tracks
.TP 8
-.B \-spin
+.B \-\-spin
.TP 8
-.B \-no\-spin
+.B \-\-no\-spin
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1),
glitchpeg \- glitched image screen saver.
.SH SYNOPSIS
.B glitchpeg
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-duration \fInumber\fP]
-[\-count \fInumber\fP]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-duration \fInumber\fP]
+[\-\-count \fInumber\fP]
.SH DESCRIPTION
Loads an image, corrupts it, and then displays the corrupted version,
several times a second. After a while, finds a new image to corrupt.
checksums that detect simple corruption.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 30000 (0.03 seconds).
.TP 8
-.B \-duration \fInumber\fP
+.B \-\-duration \fInumber\fP
How many seconds before loading a new image. Default: 120.
.TP 8
-.B \-count \fInumber\fP
+.B \-\-count \fInumber\fP
Number of glitches to introduce per iteration. Default: 100.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SECURITY
Because this program is feeding intentionally-invalid data into your
operating system's image-decoding libraries, it is possible that it
antinspect \- ant model inspection screenhack
.SH SYNOPSIS
.B antinspect
-[\-display \fIhost:display.screen\fP] [\-window] [\-root] [\-install]
-[\-visual \fIvisual\fP] [\-delay \fImicroseconds\fP] [\-fps]
+[\-\-display \fIhost:display.screen\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-install]
+[\-\-visual \fIvisual\fP] [\-\-delay \fImicroseconds\fP] [\-\-fps]
.SH DESCRIPTION
The \fIantinspect\fP code displays three ant-powered balls churning in a
circle.
.I antinspect
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-install
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-shadows
+.B \-\-shadows
Draw shadows on ground
.TP 8
-.B \-visual \fIvisual\fP\fP
+.B \-\-visual \fIvisual\fP\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
antmaze \- ant maze walker
.SH SYNOPSIS
.B antmaze
-[\-display \fIhost:display.screen\fP] [\-window] [\-root] [\-install]
-[\-visual \fIvisual\fP] [\-delay \fImicroseconds\fP] [\-fps]
+[\-\-display \fIhost:display.screen\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-install]
+[\-\-visual \fIvisual\fP] [\-\-delay \fImicroseconds\fP] [\-\-fps]
.SH DESCRIPTION
The \fIantmaze\fP code displays ants finding their way through a maze.
.SH OPTIONS
.I antmaze
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-install
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP\fP
+.B \-\-visual \fIvisual\fP\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
antspotlight \- ant spotlight screenhack
.SH SYNOPSIS
.B antspotlight
-[\-display \fIhost:display.screen\fP] [\-window] [\-root] [\-install]
-[\-visual \fIvisual\fP] [\-delay \fImicroseconds\fP] [\-fps]
+[\-\-display \fIhost:display.screen\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-install]
+[\-\-visual \fIvisual\fP] [\-\-delay \fImicroseconds\fP] [\-\-fps]
.SH DESCRIPTION
The \fIantspotlight\fP code displays a single ant spotting out a screenshot.
.SH OPTIONS
.I antspotlight
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-install
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP\fP
+.B \-\-visual \fIvisual\fP\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.TP 8
-.B \-delay \fImicroseconds\fP
+.B \-\-delay \fImicroseconds\fP
Per-frame delay.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
atlantis \- draw swimming sharks, whales, and dolphins.
.SH SYNOPSIS
.B atlantis
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-whalespeed \fInumber\fP]
-[\-delay \fInumber\fP]
-[\-size \fInumber\fP]
-[\-count \fInumber\fP]
-[\-no-texture]
-[\-gradient]
-[\-wireframe]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-whalespeed \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-size \fInumber\fP]
+[\-\-count \fInumber\fP]
+[\-\-no-texture]
+[\-\-gradient]
+[\-\-wireframe]
+[\-\-fps]
.SH DESCRIPTION
This is xfishtank writ large: a GL animation of a number of sharks,
dolphins, and whales. The swimming motions are great.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-whalespeed \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-whalespeed \fInumber\fP
Whale Speed. 0 - 1000. Default: 250.
.TP 8
-.B \-cycles \fInumber\fP
+.B \-\-cycles \fInumber\fP
Shark Speed. Default: 100.
.TP 8
-.B \-size \fInumber\fP
+.B \-\-size \fInumber\fP
Shark Proximity. 100 - 10000. Default: 6000.
.TP 8
-.B \-count \fInumber\fP
+.B \-\-count \fInumber\fP
Number of Sharks. 0 - 20. Default: 4.
.TP 8
-.B \-texture | \-no-texture
+.B \-\-texture | \-\-no-texture
Whether to show shimmering water.
.TP 8
-.B \-gradient
+.B \-\-gradient
Whether to draw a gradient on the background, making it darker at the bottom.
.TP 8
-.B \-wireframe
+.B \-\-wireframe
Render in wireframe instead of solid.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
atunnel \- hypnotic GL tunnel journey
.SH SYNOPSIS
.B sballs
-[\-display \fIhost:display.screen\fP] [\-window] [\-root]
-[\-visual \fIvisual\fP] [\-delay \fImicroseconds\fP]
-[\-light] [\-no-light]
-[\-wire] [\-no-wire]
-[\-texture] [\-no-texture]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-visual \fIvisual\fP] [\-\-delay \fImicroseconds\fP]
+[\-\-light] [\-\-no-light]
+[\-\-wire] [\-\-no-wire]
+[\-\-texture] [\-\-no-texture]
+[\-\-fps]
.SH DESCRIPTION
The \fIatunnel\fP program draws an animation of a journey in a GL tunnel.
.SH OPTIONS
.I sballs
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-install
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.TP 8
-.B \-texture
+.B \-\-texture
Show a textured tunnel. This is the default.
.TP 8
-.B \-no\-texture
+.B \-\-no\-texture
Disables texturing the animation.
.TP 8
-.B \-wire
+.B \-\-wire
Draw a wireframe rendition of the tunnel.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1),
beats - create offset beating figures
.SH SYNOPSIS
.B beats
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-count \fInumber\fP]
-[\-cycle \fInumber\fP]
-[\-wireframe]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-count \fInumber\fP]
+[\-\-cycle \fInumber\fP]
+[\-\-wireframe]
+[\-\-fps]
.SH DESCRIPTION
The \fIbeats\fP program draws balls that move around at a slightly different rate from each other, creating interesting chaotic and ordered beating patterns. Each cycle / pattern is created such that it finishes as a single line of balls at the top of the screen, so that the patterns can smoothly transition between each other.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 30000 (0.03 seconds.).
.TP 8
-.B \-count \fInumber\fP
+.B \-\-count \fInumber\fP
Number of balls. Default: 30.
.TP 8
-.B \-cycle \fInumber\fP
+.B \-\-cycle \fInumber\fP
Cycle type to use (Default: -1):
-1 - pseudo-random based on current time
0 - clockwise
2 - metronome
3 - galaxy
.TP 8
-.B \-tick | \-no-tick
+.B \-\-tick | \-\-no-tick
Add a tick for 'clockwise' and 'galaxy' patterns.
.TP 8
-.B \-blur | \-no-blur
+.B \-\-blur | \-\-no-blur
Add motion blur to the ball movement.
.TP 8
-.B \-wireframe | \-no-wireframe
+.B \-\-wireframe | \-\-no-wireframe
Render in wireframe instead of solid.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
blinkbox \- shows a ball inside a box.
.SH SYNOPSIS
.B blinkbox
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-wireframe]
-[\-boxsize \fInumber\fP]
-[\-dissolve]
-[\-fade]
-[\-no\-blur]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-wireframe]
+[\-\-boxsize \fInumber\fP]
+[\-\-dissolve]
+[\-\-fade]
+[\-\-no\-blur]
+[\-\-fps]
.SH DESCRIPTION
Shows a ball contained inside of a bounding box. Colored blocks blink in
when the ball hits the edges.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 30000 (0.03 seconds.).
.TP 8
-.B \-wireframe | \-no-wireframe
+.B \-\-wireframe | \-\-no-wireframe
Render in wireframe instead of solid.
.TP 8
-.B \-boxsize
+.B \-\-boxsize
Sets the size of the colored boxes. Should be between 1 and 8. Default: 2
.TP 8
-.B \-dissolve | \-no-dissolve
+.B \-\-dissolve | \-\-no-dissolve
Boxes shrink instead of just vanishing.
.TP 8
-.B \-fade | \-no-fade
+.B \-\-fade | \-\-no-fade
Boxes fade to transparency instead of just vanishing.
.TP 8
-.B \-blur | \-no-blur
+.B \-\-blur | \-\-no-blur
Enable or disable motion blur on the ball. Default: blurry.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
blocktube \- draws a swirling, falling tunnel of reflective slabs
.SH SYNOPSIS
.B blocktube
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-holdtime \fInumber\fP]
-[\-changetime \fInumber\fP]
-[\-no-texture]
-[\-no-fog]
-[\-wireframe]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-holdtime \fInumber\fP]
+[\-\-changetime \fInumber\fP]
+[\-\-no-texture]
+[\-\-no-fog]
+[\-\-wireframe]
+[\-\-fps]
.SH DESCRIPTION
Blocktube draws a swirling, falling tunnel of reflective slabs. They fade
from hue to hue.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 40000 (0.04 seconds.).
.TP 8
-.B \-holdtime \fInumber\fP
+.B \-\-holdtime \fInumber\fP
How long to stay on the same color. Default: 1000 frames.
.TP 8
-.B \-changetime \fInumber\fP
+.B \-\-changetime \fInumber\fP
How long it takes to fade to a new color. Default: 200 frames.
.TP 8
-.B \-no-texture
+.B \-\-no-texture
Draw solid blocks intstead of reflective blocks.
.TP 8
-.B \-no-fog
+.B \-\-no-fog
Do not make blocks in the distance be darker.
.TP 8
-.B \-wireframe
+.B \-\-wireframe
Only draw outlines.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
boing \- draws a bouncing ball like the ancient Amiga demo
.SH SYNOPSIS
.B boing
-[\-display \fIhost:display.screen\fP] [\-window] [\-root] [\-install]
-[\-visual \fIvisual\fP]
-[\-delay \fIusecs\fP]
-[\-smooth]
-[\-lighting]
-[\-scanlines]
-[\-speed]
-[\-no\-spin]
-[\-angle \fIdegrees\fP]
-[\-size \fIratio\fP]
-[\-parallels \fIn\fP]
-[\-meridians \fIn\fP]
-[\-wireframe]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-install]
+[\-\-visual \fIvisual\fP]
+[\-\-delay \fIusecs\fP]
+[\-\-smooth]
+[\-\-lighting]
+[\-\-scanlines]
+[\-\-speed]
+[\-\-no\-spin]
+[\-\-angle \fIdegrees\fP]
+[\-\-size \fIratio\fP]
+[\-\-parallels \fIn\fP]
+[\-\-meridians \fIn\fP]
+[\-\-wireframe]
+[\-\-fps]
.SH DESCRIPTION
The \fIboing\fP program draws a bouncing checkered ball on a grid.
.I boing
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-install
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP\fP
+.B \-\-visual \fIvisual\fP\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-delay \fIusecs\fP
+.B \-\-delay \fIusecs\fP
The delay between frames of the animation, in microseconds: default 15000.
.TP 8
-.B \-smooth
+.B \-\-smooth
Draw a smooth sphere instead of a faceted polyhedron.
.TP 8
-.B \-lighting
+.B \-\-lighting
Do shaded lighting instead of flat colors.
.TP 8
-.B \-scanlines
+.B \-\-scanlines
If the window is large enough, draw horizontal lines to simulate the
scanlines on a low resolution monitor.
.TP 8
-.B \-speed \fIratio\fP
+.B \-\-speed \fIratio\fP
Change the animation speed; 0.5 to go half as fast, 2.0 to go twice as fast.
.TP 8
-.B \-no\-spin
+.B \-\-no\-spin
Don't rotate the ball.
.TP 8
-.B \-angle \fIdegrees\fP
+.B \-\-angle \fIdegrees\fP
The jaunty angle at which the ball sits. Default 15 degrees.
.TP 8
-.B \-size \fIratio\fP
+.B \-\-size \fIratio\fP
How big the ball is; default 0.5 meaning about half the size of the window.
.TP 8
-.B \-parallels \fIn\fP
-.B \-meridians \fIn\fP
+.B \-\-parallels \fIn\fP
+.B \-\-meridians \fIn\fP
The pattern of rectangles on the ball. Default 8x16.
.TP 8
-.B \-wireframe
+.B \-\-wireframe
Look crummy.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR bsod (MANSUFFIX),
.BR pong (MANSUFFIX),
bouncingcow \- a happy cow on a trampoline in 3D. Moo.
.SH SYNOPSIS
.B bouncingcow
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-speed \fInumber\fP]
-[\-count \fInumber\fP]
-[\-mathematical]
-[\-texture \fIfilename\fP]
-[\-wireframe]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-speed \fInumber\fP]
+[\-\-count \fInumber\fP]
+[\-\-mathematical]
+[\-\-texture \fIfilename\fP]
+[\-\-wireframe]
+[\-\-fps]
.SH DESCRIPTION
It's very silly.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 30000 (0.03 seconds.).
.TP 8
-.B \-speed \fInumber\fP
+.B \-\-speed \fInumber\fP
How fast the cow bounces. Larger for faster. Default: 1.0.
.TP 8
-.B \-count \fInumber\fP
+.B \-\-count \fInumber\fP
How many cows! Default 1.
.TP 8
-.B \-texture \fIfilename\fP
+.B \-\-texture \fIfilename\fP
An image file to paint on the cow's hide.
Note that on most systems, GL textures must have dimensions that are a
power of two.
.TP 8
-.B \-mathematical
+.B \-\-mathematical
Periodically transition to display mathematically ideal cows (spherical,
frictionless).
.TP 8
-.B \-wireframe
+.B \-\-wireframe
Render in wireframe instead of solid.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
boxed \- draws a box full of 3D bouncing balls that explode.
.SH SYNOPSIS
.B boxed
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-wireframe]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-wireframe]
+[\-\-fps]
.SH DESCRIPTION
Draws a box full of 3D bouncing balls that explode.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 20000 (0.02 seconds.).
.TP 8
-.B \-wireframe
+.B \-\-wireframe
Render in wireframe instead of solid.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
bubble3d \- 3d rising bubbles.
.SH SYNOPSIS
.B bubble3d
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-transparent]
-[\-color \fIcolor\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-transparent]
+[\-\-color \fIcolor\fP]
+[\-\-fps]
.SH DESCRIPTION
Draws a stream of rising, undulating 3D bubbles, rising toward the top of
the screen, with nice specular reflections.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-transparent
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-transparent
Draw transparent bubbles instead of solid ones.
.TP 8
-.B \-color \fIcolor\fP
+.B \-\-color \fIcolor\fP
Draw bubbles of the specified color. "Random" means a different color
for each bubble.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 15000 (0.015 seconds.).
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
cage \- Escher's impossible cage, for xscreensaver.
.SH SYNOPSIS
.B cage
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-mono]
-[\-wireframe]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-mono]
+[\-\-wireframe]
+[\-\-fps]
.SH DESCRIPTION
This draws Escher's "Impossible Cage", a 3d analog of a moebius strip,
and rotates it in three dimensions.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 25000 (0.03 seconds.).
.TP 8
-.B \-mono
+.B \-\-mono
Render solid instead of textured.
.TP 8
-.B \-wireframe
+.B \-\-wireframe
Render in wireframe instead of textured.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
carousel \- displays multiple images rotating in a circular formation
.SH SYNOPSIS
.B carousel
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-count \fIint\fP]
-[\-zoom | \-no\-zoom]
-[\-tilt \fIXY\fP]
-[\-titles | \-no\-titles]
-[\-font \fIfont\fP]
-[\-speed \fIratio\fP]
-[\-duration \fIseconds\fP]
-[\-fps]
-[\-debug]
-[\-wireframe]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-count \fIint\fP]
+[\-\-zoom | \-\-no\-zoom]
+[\-\-tilt \fIXY\fP]
+[\-\-titles | \-\-no\-titles]
+[\-\-font \fIfont\fP]
+[\-\-speed \fIratio\fP]
+[\-\-duration \fIseconds\fP]
+[\-\-fps]
+[\-\-debug]
+[\-\-wireframe]
.SH DESCRIPTION
Loads several random images, and displays them flying in a circular
formation. The circle changes speed and direction randomly, tilts on
and click on the "Advanced" tab.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-count \fIint\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-count \fIint\fP
How many images to display. Default 7.
.TP 8
-.B \-zoom \fB| \-no\-zoom\fP
+.B \-\-zoom \fB| \-\-no\-zoom\fP
Whether the images should move in and out (toward and away from the
axis of rotation). Default true.
.TP 8
-.B \-tilt \fIXY\fP \fB| \-no\-tilt\fP
+.B \-\-tilt \fIXY\fP \fB| \-\-no\-tilt\fP
Whether the axis of rotation should tilt, and how. \fB-tilt X\fP
means that it will tilt toward and away from the viewer.
\fB-tilt Y\fP means that it will tilt to the left and right of the
screen. \fB-tilt XY\fP (the default) means it will do both.
.TP 8
-.B \-titles \fB| \-no\-titles\fP
+.B \-\-titles \fB| \-\-no\-titles\fP
Whether to display the file names of the images beneath them. Default: yes.
.TP 8
-.B \-font \fIfont-name\fP
+.B \-\-font \fIfont-name\fP
The font to use for titles. Note that the size of the font affects
the clarity of the characters, not their size (it is auto-scaled.)
.TP 8
-.B \-duration \fIseconds\fP
+.B \-\-duration \fIseconds\fP
Every \fIduration\fP seconds, one of the images will be replaced
with a new one. Default 20 seconds.
.TP 8
-.B \-speed \fIratio\fP
+.B \-\-speed \fIratio\fP
Speed up or slow down the animation. 0.5 means half as fast as the
default; 2.0 means twice as fast.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 20000 (0.02 seconds.).
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.TP 8
-.B \-debug
+.B \-\-debug
Prints debugging info to stderr.
.TP 8
-.B \-wireframe
+.B \-\-wireframe
Another debug mode.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver\-settings (1)
chompytower \- a tree with teeth.
.SH SYNOPSIS
.B chompytower
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-speed \fInumber\fP]
-[\-resolution \fInumber\fP]
-[\-no-spin]
-[\-wander]
-[\-no-tilt]
-[\-no-smooth]
-[\-wireframe]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-speed \fInumber\fP]
+[\-\-resolution \fInumber\fP]
+[\-\-no-spin]
+[\-\-wander]
+[\-\-no-tilt]
+[\-\-no-smooth]
+[\-\-wireframe]
+[\-\-fps]
.SH DESCRIPTION
This tree's got teeth!
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 30000 (0.03 seconds).
.TP 8
-.B \-speed \fInumber\fP
+.B \-\-speed \fInumber\fP
Animation speed. 2.0 means twice as fast, 0.5 means half as fast.
.TP 8
-.B \-resolution \fInumber\fP
+.B \-\-resolution \fInumber\fP
How many polygons to use on the trunk. 2.0 means twice as many, 0.5 means
half as many.
.TP 8
-.B \-spin | \-no-spin
+.B \-\-spin | \-\-no-spin
Whether the tree should slowly rotate.
.TP 8
-.B \-wander | \-no-wander
+.B \-\-wander | \-\-no-wander
Whether the object should wander around the screen.
.TP 8
-.B \-tilt | \-no-tilt
+.B \-\-tilt | \-\-no-tilt
Whether the observer should look up and down.
.TP 8
-.B \-smooth | \-no-smooth
+.B \-\-smooth | \-\-no-smooth
Smooth. Boolean.
.TP 8
-.B \-wireframe | \-no-wireframe
+.B \-\-wireframe | \-\-no-wireframe
Render in wireframe instead of solid.
.TP 8
-.B \-fps | \-no-fps
+.B \-\-fps | \-\-no-fps
Whether to show a frames-per-second display at the bottom of the screen.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
circuit \- animates a number of 3D electronic components.
.SH SYNOPSIS
.B circuit
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-parts \fInumber\fP]
-[\-no-spin]
-[\-rotate]
-[\-speed \fInumber\fP]
-[\-no-light]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-parts \fInumber\fP]
+[\-\-no-spin]
+[\-\-rotate]
+[\-\-speed \fInumber\fP]
+[\-\-no-light]
+[\-\-fps]
.SH DESCRIPTION
Animates a number of 3D electronic components.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 20000 (0.02 seconds.).
.TP 8
-.B \-parts \fInumber\fP
+.B \-\-parts \fInumber\fP
Number of parts. Default: 10.
.TP 8
-.B \-spin | \-no-spin
+.B \-\-spin | \-\-no-spin
Whether the objects should spin.
.TP 8
-.B \-rotate | \-no-rotate
+.B \-\-rotate | \-\-no-rotate
Whether the scene should spin.
.TP 8
-.B \-speed \fInumber\fP
+.B \-\-speed \fInumber\fP
Rotation speed, 0 - 100. Default: 1.
.TP 8
-.B \-light | \-no-light
+.B \-\-light | \-\-no-light
Whether to use lighting, or flat coloring.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
cityflow \- waves of boxes.
.SH SYNOPSIS
.B cityflow
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-count \fInumber\fP]
-[\-wave-speed \fInumber\fP]
-[\-wave-radius \fInumber\fP]
-[\-waves \fInumber\fP]
-[\-skew \fInumber\fP]
-[\-wireframe]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-count \fInumber\fP]
+[\-\-wave-speed \fInumber\fP]
+[\-\-wave-radius \fInumber\fP]
+[\-\-waves \fInumber\fP]
+[\-\-skew \fInumber\fP]
+[\-\-wireframe]
+[\-\-fps]
.SH DESCRIPTION
Waves move across a sea of boxes. The city swells. The walls are closing
in.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 20000 (0.02 seconds).
.TP 8
-.B \-count \fInumber\fP
+.B \-\-count \fInumber\fP
Boxes. 50 - 4000. Default: 800.
.TP 8
-.B \-wave-speed \fInumber\fP
+.B \-\-wave-speed \fInumber\fP
Wave speed. 5 - 150. Default: 25.
.TP 8
-.B \-wave-radius \fInumber\fP
+.B \-\-wave-radius \fInumber\fP
Wave overlap. 5 - 512. Default: 256.
.TP 8
-.B \-waves \fInumber\fP
+.B \-\-waves \fInumber\fP
Wave complexity. 1 - 20. Default: 6.
.TP 8
-.B \-skew \fInumber\fP
+.B \-\-skew \fInumber\fP
Skew. 0 - 45. Default: 12.
.TP 8
-.B \-wireframe | \-no-wireframe
+.B \-\-wireframe | \-\-no-wireframe
Render in wireframe instead of solid.
.TP 8
-.B \-fps | \-no-fps
+.B \-\-fps | \-\-no-fps
Whether to show a frames-per-second display at the bottom of the screen.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
companioncube \- a vital aparatus.
.SH SYNOPSIS
.B companioncube
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-speed \fIratio\fP]
-[\-spin]
-[\-wander]
-[\-count \fInumber\fP]
-[\-wireframe]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-speed \fIratio\fP]
+[\-\-spin]
+[\-\-wander]
+[\-\-count \fInumber\fP]
+[\-\-wireframe]
+[\-\-fps]
.SH DESCRIPTION
The symptoms most commonly produced by Enrichment Center testing are
superstition, perceiving inanimate objects as alive, and hallucinations.
disregard its advice.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 30000 (0.03 seconds.).
.TP 8
-.B \-speed \fInumber\fP
+.B \-\-speed \fInumber\fP
How fast the animation should run.
Less than 1 for slower, greater than 1 for faster.
.TP 8
-.B \-count \fInumber\fP
+.B \-\-count \fInumber\fP
How many cubes. Default 3.
.TP 8
-.B \-spin
-.B \-no\-spin
+.B \-\-spin
+.B \-\-no\-spin
Instead of bouncing, float and spin.
.TP 8
-.B \-wander
-.B \-no\-wander
+.B \-\-wander
+.B \-\-no\-wander
Instead of bouncing, float and drift.
.TP 8
-.B \-wireframe
+.B \-\-wireframe
Render in wireframe instead of solid.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR tronbit (MANSUFFIX),
covid19 \- the most 2020 of all screen savers.
.SH SYNOPSIS
.B covid19
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-speed \fInumber\fP]
-[\-count \fInumber\fP]
-[\-no-wander]
-[\-no-spin]
-[\-wireframe]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-speed \fInumber\fP]
+[\-\-count \fInumber\fP]
+[\-\-no-wander]
+[\-\-no-spin]
+[\-\-wireframe]
+[\-\-fps]
.SH DESCRIPTION
SARS-CoV-2. Stay the fuck home. Wear a fucking mask.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 30000 (0.03 seconds).
.TP 8
-.B \-speed \fInumber\fP
+.B \-\-speed \fInumber\fP
Animation speed. 2.0 means twice as fast, 0.5 means half as fast.
.TP 8
-.B \-count \fInumber\fP
+.B \-\-count \fInumber\fP
Maximum number of virus particles. 1 - 200. Default: 60.
.TP 8
-.B \-wander | \-no-wander
+.B \-\-wander | \-\-no-wander
Whether the viruses should wander around the screen.
.TP 8
-.B \-spin | \-no-spin
+.B \-\-spin | \-\-no-spin
Whether the viruses should spin.
.TP 8
-.B \-wireframe | \-no-wireframe
+.B \-\-wireframe | \-\-no-wireframe
Render in wireframe instead of solid.
.TP 8
-.B \-fps | \-no-fps
+.B \-\-fps | \-\-no-fps
Whether to show a frames-per-second display at the bottom of the screen.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
crackberg \- Lose your way wandering some height fields, and enjoy candy.
.SH SYNOPSIS
.B crackberg
-[\-root]
-[\-window]
-[\-install]
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window-id \fIid\fP]
-[\-delay \fIusecs\fP]
-[\-fps]
-[\-crack]
-[\-lit]
-[\-boring]
-[\-letterbox]
-[\-flat]
-[\-wire]
-[\-nowater]
-[\-visibility \fIfloat\fP]
-[\-color \fIstring\fP]
-[\-nsubdivs \fIinteger\fP]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-window]
+[\-\-install]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window-id \fIid\fP]
+[\-\-delay \fIusecs\fP]
+[\-\-fps]
+[\-\-crack]
+[\-\-lit]
+[\-\-boring]
+[\-\-letterbox]
+[\-\-flat]
+[\-\-wire]
+[\-\-nowater]
+[\-\-visibility \fIfloat\fP]
+[\-\-color \fIstring\fP]
+[\-\-nsubdivs \fIinteger\fP]
.SH DESCRIPTION
Flies through height maps, optionally animating the instantiation and
destruction of generated tiles; by default, tiles 'grow' into place (height
.I crackberg
accepts the following options:
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-window
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-install
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual
class, or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-delay \fImicroseconds\fP
+.B \-\-delay \fImicroseconds\fP
Delay between frames; default 20000 (1/50th of a second).
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.TP 8
-.B \-crack
+.B \-\-crack
Use all possible methods to animate tile instantiation.
.TP 8
-.B \-boring
+.B \-\-boring
Do not animate instatiation at all; use this to get standard landscape
generator behavior.
.TP 8
-.B \-letterbox
+.B \-\-letterbox
Drawable window region has a 16:9 aspect ratio, regardless of actual
window size.
.TP 8
-.B \-lit
+.B \-\-lit
Enable lighting.
.TP 8
-.B \-flat
+.B \-\-flat
Flat shading (OpenGL will use one color per primitive, rather than
interpolating betwixt vertices).
.TP 8
-.B \-wire
+.B \-\-wire
Wireframe.
.TP 8
-.B \-nowater
+.B \-\-nowater
Do not display 'water' (forces negative values to zero, and selects a
different coloring method).
.TP 8
-.B \-visibility \fIfloat\fP
+.B \-\-visibility \fIfloat\fP
Value in range [0.2,1.0] (default 0.6) specifying proportion of viewable
XY plane which is to be drawn upon.
.TP 8
-.B \-color \fIstring\fP
+.B \-\-color \fIstring\fP
Selects color scheme. Use with no or bogus argument for current list.
.TP 8
-.B \-nsubdivs \fIinteger\fP
+.B \-\-nsubdivs \fIinteger\fP
Number of times to recursively subdivide each triangular tile. Each
increment increases total triangles by a factor of 4; for instance the default
setting 4 results in 256 triangles per tile.
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
crumbler \- voronoi divisions of a sphere.
.SH SYNOPSIS
.B crumbler
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-speed \fInumber\fP]
-[\-density \fInumber\fP]
-[\-fracture \fInumber\fP]
-[\-no-wander]
-[\-no-spin]
-[\-wireframe]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-speed \fInumber\fP]
+[\-\-density \fInumber\fP]
+[\-\-fracture \fInumber\fP]
+[\-\-no-wander]
+[\-\-no-spin]
+[\-\-wireframe]
+[\-\-fps]
.SH DESCRIPTION
Randomly subdivides a ball into voronoi chunks, then further subdivides one
of the remaining pieces.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 30000 (0.03 seconds).
.TP 8
-.B \-speed \fInumber\fP
+.B \-\-speed \fInumber\fP
Animation speed. 2.0 means twice as fast, 0.5 means half as fast.
.TP 8
-.B \-density \fInumber\fP
+.B \-\-density \fInumber\fP
Density of the polygons mesh. 2.0 means twice as dense, 0.5 means half.
.TP 8
-.B \-fracture \fInumber\fP
+.B \-\-fracture \fInumber\fP
How many times to fracture each object. 0 means random.
.TP 8
-.B \-wander | \-no-wander
+.B \-\-wander | \-\-no-wander
Whether the object should wander around the screen.
.TP 8
-.B \-spin | \-no-spin
+.B \-\-spin | \-\-no-spin
Whether the object should spin.
.TP 8
-.B \-wireframe | \-no-wireframe
+.B \-\-wireframe | \-\-no-wireframe
Render in wireframe instead of solid.
.TP 8
-.B \-fps | \-no-fps
+.B \-\-fps | \-\-no-fps
Whether to show a frames-per-second display at the bottom of the screen.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
cube21 \- animates the Cube 21 puzzle
.SH SYNOPSIS
.B cube21
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-install]
-[\-delay \fImicroseconds\fP]
-[\-texture] [\-no\-texture]
-[\-mono]
-[\-wireframe]
-[\-spin] [\-no\-spin]
-[\-wander] [\-no\-wander]
-[\-randomize] [\-no\-randomize]
-[\-spinspeed \fInumber\fP]
-[\-rotspeed \fInumber\fP]
-[\-wanderspeed \fInumber\fP]
-[\-wait \fInumber\fP]
-[\-cubesize \fInumber\fP]
-[\-colormode \fIarg\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-install]
+[\-\-delay \fImicroseconds\fP]
+[\-\-texture] [\-\-no\-texture]
+[\-\-mono]
+[\-\-wireframe]
+[\-\-spin] [\-\-no\-spin]
+[\-\-wander] [\-\-no\-wander]
+[\-\-randomize] [\-\-no\-randomize]
+[\-\-spinspeed \fInumber\fP]
+[\-\-rotspeed \fInumber\fP]
+[\-\-wanderspeed \fInumber\fP]
+[\-\-wait \fInumber\fP]
+[\-\-cubesize \fInumber\fP]
+[\-\-colormode \fIarg\fP]
+[\-\-fps]
.SH DESCRIPTION
This program animates a puzzle known as Cube 21 or Square-1.
Its moves are chosen randomly.
.I cube21
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-install
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP\fP
+.B \-\-visual \fIvisual\fP\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-delay \fImicroseconds\fP
+.B \-\-delay \fImicroseconds\fP
How long to pause between frames. Default is 20000, or 0.02 second.
.TP 8
-.B \-texture
+.B \-\-texture
Use texture maps. This is the default.
.TP 8
-.B \-no\-texture
+.B \-\-no\-texture
Use solid colors.
.TP 8
-.B \-mono
+.B \-\-mono
Disable both texture maps and colors.
.TP 8
-.B \-wireframe
+.B \-\-wireframe
Only draw outlines. Outlines of all pieces, not only the whole object, are drawn.
.TP 8
-.B \-spin
+.B \-\-spin
Spin the whole object around X, Y and Z axes. This is the default.
.TP 8
-.B \-no\-spin
+.B \-\-no\-spin
Do not spin, showing the same three faces all the time.
.TP 8
-.B \-wander
+.B \-\-wander
Move the object around the screen. This is the default.
.TP 8
-.B \-no\-wander
+.B \-\-no\-wander
Keep the object centered on the screen.
.TP 8
-.B \-randomize
+.B \-\-randomize
Shuffle the puzzle randomly at startup. This is the default.
.TP 8
-.B \-no\-randomize
+.B \-\-no\-randomize
Do not shuffle at startup, begin at the shape of cube.
.TP 8
-.B \-spinspeed \fInumber\fP
+.B \-\-spinspeed \fInumber\fP
The relative speed of spinning. Default is 1.0.
.TP 8
-.B \-rotspeed \fInumber\fP
+.B \-\-rotspeed \fInumber\fP
The relative speed of the moves. Default is 3.0. Setting to \(<= 0.0
makes the object stay at one configuration.
.TP 8
-.B \-wanderspeed \fInumber\fP
+.B \-\-wanderspeed \fInumber\fP
The relative speed of wandering around the screen. Default is 1.0.
.TP 8
-.B \-wait \fInumber\fP
+.B \-\-wait \fInumber\fP
How long to stay at ending position after each move. The meaning of
the argument is again relative. Default is 40.0.
.TP 8
-.B \-cubesize \fInumber\fP
+.B \-\-cubesize \fInumber\fP
Size of the object. Value of 3.0 fills roughly all the screen (its height). Default is 0.7.
.TP 8
-.B \-colormode \fIargument\fP
+.B \-\-colormode \fIargument\fP
How many and which colors should the object have. The colors are put on the piece
faces so that the puzzle is solvable. The inner faces are not influenced.
.RS
All faces white.
.RE
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
cubenetic \- cubist 3D undulating blob.
.SH SYNOPSIS
.B cubenetic
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-count \fInumber\fP]
-[\-no-wander]
-[\-no-spin]
-[\-spin \fI[XYZ]\fP]
-[\-wireframe]
-[\-no-texture]
-[\-wave-speed \fInumber\fP]
-[\-wave-radius \fInumber\fP]
-[\-waves \fInumber\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-count \fInumber\fP]
+[\-\-no-wander]
+[\-\-no-spin]
+[\-\-spin \fI[XYZ]\fP]
+[\-\-wireframe]
+[\-\-no-texture]
+[\-\-wave-speed \fInumber\fP]
+[\-\-wave-radius \fInumber\fP]
+[\-\-waves \fInumber\fP]
+[\-\-fps]
.SH DESCRIPTION
Draws a pulsating set of overlapping boxes with ever-chaning blobby
patterns undulating across their surfaces.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 20000 (0.02 seconds.).
.TP 8
-.B \-count \fInumber\fP
+.B \-\-count \fInumber\fP
How many boxes make up the object. Default: 5.
.TP 8
-.B \-wander | \-no-wander
+.B \-\-wander | \-\-no-wander
Whether the object should wander around the screen.
.TP 8
-.B \-spin \fI[XYZ]\fP
+.B \-\-spin \fI[XYZ]\fP
Around which axes should the object spin?
.TP 8
-.B \-no-spin
+.B \-\-no-spin
Don't spin.
.TP 8
-.B \-wireframe
+.B \-\-wireframe
Render in wireframe instead of solid.
.TP 8
-.B \-texture | \-no-texture
+.B \-\-texture | \-\-no-texture
Display Solid Colors.
.TP 8
-.B \-wave-speed \fInumber\fP
+.B \-\-wave-speed \fInumber\fP
Surface Pattern Speed. 5 - 150. Default: 80.
.TP 8
-.B \-wave-radius \fInumber\fP
+.B \-\-wave-radius \fInumber\fP
Surface Pattern Overlap. 5 - 600. Default: 512.
.TP 8
-.B \-waves \fInumber\fP
+.B \-\-waves \fInumber\fP
Surface Pattern Complexity. 1 - 20. Default: 3.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
cubestack \- An endless stack of unfolding, translucent cubes.
.SH SYNOPSIS
.B cubestack
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-speed \fInumber\fP]
-[\-thickness \fInumber\fP]
-[\-opacity \fInumber\fP]
-[\-no-wander]
-[\-wireframe]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-speed \fInumber\fP]
+[\-\-thickness \fInumber\fP]
+[\-\-opacity \fInumber\fP]
+[\-\-no-wander]
+[\-\-wireframe]
+[\-\-fps]
.SH DESCRIPTION
An endless stack of unfolding, translucent cubes.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 30000 (0.03 seconds).
.TP 8
-.B \-speed \fInumber\fP
+.B \-\-speed \fInumber\fP
Animation speed. 2.0 means twice as fast, 0.5 means half as fast.
.TP 8
-.B \-thickness \fInumber\fP
+.B \-\-thickness \fInumber\fP
Thickness of the face edges. 0.0 - 0.5. Default: 0.13.
.TP 8
-.B \-opacity \fInumber\fP
+.B \-\-opacity \fInumber\fP
Opacity of the cubes. 0.01 - 1.0. Default: 0.7.
.TP 8
-.B \-wander | \-no-wander
+.B \-\-wander | \-\-no-wander
Whether the object should wander around the screen.
.TP 8
-.B \-wireframe | \-no-wireframe
+.B \-\-wireframe | \-\-no-wireframe
Render in wireframe instead of solid.
.TP 8
-.B \-fps | \-no-fps
+.B \-\-fps | \-\-no-fps
Whether to show a frames-per-second display at the bottom of the screen.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
cubestorm \- a series of 3D boxes that fill space
.SH SYNOPSIS
.B cubestorm
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-speed \fIfloat\fP]
-[\-count \fIint\fP]
-[\-thickness \fIfloat\fP]
-[\-no-wander]
-[\-no-spin]
-[\-wireframe]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-speed \fIfloat\fP]
+[\-\-count \fIint\fP]
+[\-\-thickness \fIfloat\fP]
+[\-\-no-wander]
+[\-\-no-spin]
+[\-\-wireframe]
+[\-\-fps]
.SH DESCRIPTION
Draws a series of rotating 3D boxes that intersect each other and
eventually fill space.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 30000 (0.03 seconds.).
.TP 8
-.B \-speed \fInumber\fP
+.B \-\-speed \fInumber\fP
Larger numbers mean run faster. Default: 1.0.
.TP 8
-.B \-count \fInumber\fP
+.B \-\-count \fInumber\fP
Number of cubes. Default 4.
.TP 8
-.B \-thickness \fIfloat\fP
+.B \-\-thickness \fIfloat\fP
How thick the struts making up the cubes should be (0.0-1.0). Default 0.06.
.TP 8
-.B \-wander | \-no-wander
+.B \-\-wander | \-\-no-wander
Whether the cubes should wander around the screen.
.TP 8
-.B \-spin | \-no-spin
+.B \-\-spin | \-\-no-spin
Whether the cubes should spin.
.TP 8
-.B \-wireframe | \-no-wireframe
+.B \-\-wireframe | \-\-no-wireframe
Render in wireframe instead of solid.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
cubetwist \- A series of nested cubes rotate and slide recursively.
.SH SYNOPSIS
.B cubetwist
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-speed \fInumber\fP]
-[\-thickness \fInumber\fP]
-[\-displacement \fInumber\fP]
-[\-no-flat]
-[\-no-wander]
-[\-no-spin]
-[\-wireframe]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-speed \fInumber\fP]
+[\-\-thickness \fInumber\fP]
+[\-\-displacement \fInumber\fP]
+[\-\-no-flat]
+[\-\-no-wander]
+[\-\-no-spin]
+[\-\-wireframe]
+[\-\-fps]
.SH DESCRIPTION
A series of nested cubes rotate and slide recursively.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 30000 (0.03 seconds).
.TP 8
-.B \-speed \fInumber\fP
+.B \-\-speed \fInumber\fP
Animation speed. 2.0 means twice as fast, 0.5 means half as fast.
.TP 8
-.B \-thickness \fInumber\fP
+.B \-\-thickness \fInumber\fP
Thickness of the cube edges. 0.005 - 0.2. Default: 0.05.
.TP 8
-.B \-displacement \fInumber\fP
+.B \-\-displacement \fInumber\fP
Displacement between nested cubes. 0.0 - 0.2. Default: 0.01.
.TP 8
-.B \-flat | \-no-flat
+.B \-\-flat | \-\-no-flat
Whether to use flat shading, or lighting. Default flat.
.TP 8
-.B \-wander | \-no-wander
+.B \-\-wander | \-\-no-wander
Whether the object should wander around the screen.
.TP 8
-.B \-spin | \-no-spin
+.B \-\-spin | \-\-no-spin
Whether the object should spin.
.TP 8
-.B \-wireframe | \-no-wireframe
+.B \-\-wireframe | \-\-no-wireframe
Render in wireframe instead of solid.
.TP 8
-.B \-fps | \-no-fps
+.B \-\-fps | \-\-no-fps
Whether to show a frames-per-second display at the bottom of the screen.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
cubicgrid \- rotating 3D lattice seen from inside
.SH SYNOPSIS
.B cubicgrid
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-install]
-[\-delay \fImicroseconds\fP]
-[\-mono]
-[\-speed \fInumber\fP]
-[\-zoom \fInumber\fP]
-[\-ticks \fInumber\fP]
-[\-bigdots]
-[\-fps]
-[\-symmetry \fcrystalographic symmetry\fP]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-install]
+[\-\-delay \fImicroseconds\fP]
+[\-\-mono]
+[\-\-speed \fInumber\fP]
+[\-\-zoom \fInumber\fP]
+[\-\-ticks \fInumber\fP]
+[\-\-bigdots]
+[\-\-fps]
+[\-\-symmetry \fIcrystalographic symmetry\fP]
.SH DESCRIPTION
This program shows the view of an observer located inside a set of points
arranged to a 3D lattice. As the lattice rotates, various view-throughs appear
.I cubicgrid
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-install
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP\fP
+.B \-\-visual \fIvisual\fP\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-delay \fImicroseconds\fP
+.B \-\-delay \fImicroseconds\fP
How long to pause between frames. Default is 20000, or 0.02 second.
.TP 8
-.B \-mono
+.B \-\-mono
Draw in black and white. If not used, a fixed all-color scheme is chosen.
.TP 8
-.B \-speed \fInumber\fP
+.B \-\-speed \fInumber\fP
The maximum speed of the rotation. The actual speed and axis change smoothly
for better effect. 0.5 - 10. The default is 1.0.
.TP 8
-.B \-zoom \fInumber\fP
+.B \-\-zoom \fInumber\fP
Size of the lattice. Ideally it should fill all the screen, but one may find
other values also interesting. 5 - 50. The default of 20 should do for common
screen aspect ratios.
.TP 8
-.B \-ticks \fInumber\fP
+.B \-\-ticks \fInumber\fP
The count of points drawn along every axis. 10 - 100. The default is 30.
.TP 8
-.B \-bigdots
+.B \-\-bigdots
Draw the points twice as big.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.TP 8
-.B \-symmetry \fSymmetry\fP
+.B \-\-symmetry \fISymmetry\fP
Which crystalographic symmetry system to use. One of "auto", "cubic", or
"hexagonal". "auto" will randomly select between symmetry systems.
.SH ENVIRONMENT
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
dangerball \- a 3D ball that periodically extrudes spikes. Ouch!
.SH SYNOPSIS
.B dangerball
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-speed \fInumber\fP]
-[\-count \fInumber\fP]
-[\-no-wander]
-[\-no-spin]
-[\-wireframe]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-speed \fInumber\fP]
+[\-\-count \fInumber\fP]
+[\-\-no-wander]
+[\-\-no-spin]
+[\-\-wireframe]
+[\-\-fps]
.SH DESCRIPTION
Draws a ball that periodically extrudes many random spikes. Ouch!
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 30000 (0.03 seconds.).
.TP 8
-.B \-speed \fInumber\fP
+.B \-\-speed \fInumber\fP
Spike growth frequency. 0.0 - 0.25. Default: 0.05.
.TP 8
-.B \-count \fInumber\fP
+.B \-\-count \fInumber\fP
Number o spikes. Default: 30.
.TP 8
-.B \-wander | \-no-wander
+.B \-\-wander | \-\-no-wander
Whether the object should wander around the screen.
.TP 8
-.B \-spin | \-no-spin
+.B \-\-spin | \-\-no-spin
Whether the object should spin.
.TP 8
-.B \-wireframe | \-no-wireframe
+.B \-\-wireframe | \-\-no-wireframe
Render in wireframe instead of solid.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
deepstars \- screen saver.
.SH SYNOPSIS
.B deepstars
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-speed \fInumber\fP]
-[\-smear \fInumber\fP]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-speed \fInumber\fP]
+[\-\-smear \fInumber\fP]
.SH DESCRIPTION
A long exposure of the night sky, showing star paths as vapor trails.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 30000 (0.03 seconds).
.TP 8
-.B \-speed \fInumber\fP
+.B \-\-speed \fInumber\fP
Animation speed. 2.0 means twice as fast, 0.5 means half as fast.
.TP 8
-.B \-smear \fInumber\fP
+.B \-\-smear \fInumber\fP
How long the vapor trails should be.
2.0 means twice as long, 0.5 means half as long.
.SH ENVIRONMENT
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
discoball \- A dusty, dented disco ball screen saver.
.SH SYNOPSIS
.B discoball
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-speed \fInumber\fP]
-[\-count \fInumber\fP]
-[\-no-wander]
-[\-spin]
-[\-wireframe]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-speed \fInumber\fP]
+[\-\-count \fInumber\fP]
+[\-\-no-wander]
+[\-\-spin]
+[\-\-wireframe]
+[\-\-fps]
.SH DESCRIPTION
A dusty, dented disco ball. Woop woop.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 30000 (0.03 seconds).
.TP 8
-.B \-speed \fInumber\fP
+.B \-\-speed \fInumber\fP
Animation speed. 2.0 means twice as fast, 0.5 means half as fast.
.TP 8
-.B \-count \fInumber\fP
+.B \-\-count \fInumber\fP
Number of rows of tiles on the ball. 10 - 100. Default: 30.
.TP 8
-.B \-wander | \-no-wander
+.B \-\-wander | \-\-no-wander
Whether the object should wander around the screen.
.TP 8
-.B \-spin | \-no-spin
+.B \-\-spin | \-\-no-spin
Whether the scene should spin.
.TP 8
-.B \-wireframe | \-no-wireframe
+.B \-\-wireframe | \-\-no-wireframe
Render in wireframe instead of solid.
.TP 8
-.B \-fps | \-no-fps
+.B \-\-fps | \-\-no-fps
Whether to show a frames-per-second display at the bottom of the screen.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
dymaxionmap \- An animation of Buckminster Fuller's unwrapped icosahedral globe.
.SH SYNOPSIS
.B dymaxionmap
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-speed \fIratio\fP]
-[\-no-wander]
-[\-no-roll]
-[\-no-stars]
-[\-no-grid]
-[\-flat]
-[\-satellite]
-[\-image \fIfile\fP]
-[\-image2 \fIfile\fP]
-[\-frames \fInumber\fP]
-[\-wireframe]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-speed \fIratio\fP]
+[\-\-no-wander]
+[\-\-no-roll]
+[\-\-no-stars]
+[\-\-no-grid]
+[\-\-flat]
+[\-\-satellite]
+[\-\-image \fIfile\fP]
+[\-\-image2 \fIfile\fP]
+[\-\-frames \fInumber\fP]
+[\-\-wireframe]
+[\-\-fps]
.SH DESCRIPTION
Buckminster Fuller's map of the Earth projected onto the surface of an
unfolded icosahedron. It depicts the Earth's continents as one island, or
imagery, and can load and convert other Equirectangular-projected maps.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 20000 (0.02 seconds).
.TP 8
-.B \-speed \fIratio\fP
+.B \-\-speed \fIratio\fP
Speed of the animation. 0.5 means half as fast, 2 means twice as fast.
.TP 8
-.B \-wander | \-no-wander
+.B \-\-wander | \-\-no-wander
Whether the object should wander around the screen. Default yes.
.TP 8
-.B \-roll | \-no-roll
+.B \-\-roll | \-\-no-roll
Whether the object should roll randomly. Default yes.
.TP 8
-.B \-stars | \-no-stars
+.B \-\-stars | \-\-no-stars
Whether to display a star field. Default yes.
.TP 8
-.B \-grid | \-no-grid
+.B \-\-grid | \-\-no-grid
Whether to overlay a latitude/longitude grid over the map. Default yes.
.TP 8
-.B \-flat
+.B \-\-flat
Display a flat-colored map of the Earth. This is the default.
.TP 8
-.B \-satellite
+.B \-\-satellite
Display a day-time satellite map of the Earth.
.TP 8
-.B \-image \fIfile\fP
+.B \-\-image \fIfile\fP
An image to use for the day-time map.
.TP 8
-.B \-image2 \fIfile\fP
+.B \-\-image2 \fIfile\fP
An image to use for the night-time map.
The two images can be the same: the night-time one will be darkened.
.TP 8
-.B \-frames \fInumber\fP
+.B \-\-frames \fInumber\fP
The number of frames in the day/night animation. Default 720.
Larger numbers are smoother, but use more memory.
The day/night animation happens if \fIimage2\fP is set, or
if \fIframes\fP is greater than 1.
.TP 8
-.B \-wireframe | \-no-wireframe
+.B \-\-wireframe | \-\-no-wireframe
Render in wireframe instead of solid.
.TP 8
-.B \-fps | \-no-fps
+.B \-\-fps | \-\-no-fps
Whether to show a frames-per-second display at the bottom of the screen.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
endgame \- endgame chess screensaver
.SH SYNOPSIS
.B endgame
-[\-display \fIhost:display.screen\fP]
-[\-window]
-[\-root]
-[\-install]
-[\-visual \fIvisual\fP]
-[\-delay \fImicroseconds\fP]
-[\-wireframe]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-install]
+[\-\-visual \fIvisual\fP]
+[\-\-delay \fImicroseconds\fP]
+[\-\-wireframe]
+[\-\-fps]
.SH DESCRIPTION
endgame replays a brilliant chess ending
.SH OPTIONS
.I endgame
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-install
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-shadows
+.B \-\-shadows
Project pieces against the board with dark blend.
.TP 8
-.B \-reflections
+.B \-\-reflections
Reflect pieces in light board squares.
.TP 8
-.B \-classic
+.B \-\-classic
Use the original low-polygon piece models.
.TP 8
-.B \-visual \fIvisual\fP\fP
+.B \-\-visual \fIvisual\fP\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-wireframe
+.B \-\-wireframe
Render in wireframe instead of solid.
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH BUGS
It's not unknown for this and other OpenGL hacks to fail under hardware accelaration (UtahGLX) and take the X server with them. Texture images must be 16x16 or 32x32 or 64x64 etc.
.SH SEE ALSO
energystream \- a flow of particles which form an energy stream
.SH SYNOPSIS
.B energystream
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-no-wander]
-[\-no-spin]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-no-wander]
+[\-\-no-spin]
+[\-\-fps]
.SH DESCRIPTION
Draws a set of flowing particles with camera flying around and through it.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-wander | \-no-wander
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-wander | \-\-no-wander
Whether the camera should wander around the screen.
.TP 8
-.B \-spin | \-no-spin
+.B \-\-spin | \-\-no-spin
Whether the camera should spin.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
engine \- draws a 3D four-stroke engine.
.SH SYNOPSIS
.B engine
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-engine \fIname\fP]
-[\-delay \fInumber\fP]
-[\-no-move]
-[\-no-spin]
-[\-no-title]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-engine \fIname\fP]
+[\-\-delay \fInumber\fP]
+[\-\-no-move]
+[\-\-no-spin]
+[\-\-no-title]
+[\-\-fps]
.SH DESCRIPTION
Draws a simple four-stroke engine that floats around the screen.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-engine \fIname\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-engine \fIname\fP
What kind of engine to draw. Default: random.
Known models are:
"Honda Insight" (3),
and
"Jaguar XKE" (V12).
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 10000 (0.01 seconds.).
.TP 8
-.B \-move | \-no-move
+.B \-\-move | \-\-no-move
Whether the object should wander around the screen.
.TP 8
-.B \-spin | \-no-spin
+.B \-\-spin | \-\-no-spin
Whether the object should spin.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.TP 8
-.B \-title | \-no-title
+.B \-\-title | \-\-no-title
Whether to display the name of the engine being rendered.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
esper \- Enhance 224 to 176. Go right. Enhance 57 19. Track 45 left.
.SH SYNOPSIS
.B esper
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-speed \fInumber\fP]
-[\-titles]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-speed \fInumber\fP]
+[\-\-titles]
+[\-\-fps]
.SH DESCRIPTION
"Enhance 224 to 176. Pull out track right. Center in pull back. Pull back.
Wait a minute. Go right. Stop. Enhance 57 19. Track 45 left. Gimme a
reflections on various objects in the photograph.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 20000 (0.02 seconds).
.TP 8
-.B \-speed \fInumber\fP
+.B \-\-speed \fInumber\fP
Animation speed. 2.0 means twice as fast, 0.5 means half as fast.
.TP 8
-.B \-titles | \-no-titles
+.B \-\-titles | \-\-no-titles
Show file names. Boolean.
.TP 8
-.B \-fps | \-no-fps
+.B \-\-fps | \-\-no-fps
Whether to show a frames-per-second display at the top of the screen.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
surface surface, and the Ida surface.
.SH SYNOPSIS
.B etruscanvenus
-[\-display \fIhost:display.screen\fP]
-[\-install]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fIusecs\fP]
-[\-fps]
-[\-mode \fIdisplay-mode\fP]
-[\-wireframe]
-[\-surface]
-[\-transparent]
-[\-appearance \fIappearance\fP]
-[\-solid]
-[\-distance-bands]
-[\-direction-bands]
-[\-colors \fIcolor-scheme\fP]
-[\-onesided-colors]
-[\-twosided-colors]
-[\-distance-colors]
-[\-direction-colors]
-[\-no-change-colors]
-[\-view-mode \fIview-mode\fP]
-[\-walk]
-[\-turn]
-[\-no-deform]
-[\-deformation-speed \fIfloat\fP]
-[\-initial-deformation \fIfloat\fP]
-[\-etruscan-venus]
-[\-roman]
-[\-boy]
-[\-ida]
-[\-orientation-marks]
-[\-projection \fImode\fP]
-[\-perspective]
-[\-orthographic]
-[\-speed-x \fIfloat\fP]
-[\-speed-y \fIfloat\fP]
-[\-speed-z \fIfloat\fP]
-[\-walk-direction \fIfloat\fP]
-[\-walk-speed \fIfloat\fP]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-install]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fIusecs\fP]
+[\-\-fps]
+[\-\-mode \fIdisplay-mode\fP]
+[\-\-wireframe]
+[\-\-surface]
+[\-\-transparent]
+[\-\-appearance \fIappearance\fP]
+[\-\-solid]
+[\-\-distance-bands]
+[\-\-direction-bands]
+[\-\-colors \fIcolor-scheme\fP]
+[\-\-onesided-colors]
+[\-\-twosided-colors]
+[\-\-distance-colors]
+[\-\-direction-colors]
+[\-\-no-change-colors]
+[\-\-view-mode \fIview-mode\fP]
+[\-\-walk]
+[\-\-turn]
+[\-\-no-deform]
+[\-\-deformation-speed \fIfloat\fP]
+[\-\-initial-deformation \fIfloat\fP]
+[\-\-etruscan-venus]
+[\-\-roman]
+[\-\-boy]
+[\-\-ida]
+[\-\-orientation-marks]
+[\-\-projection \fImode\fP]
+[\-\-perspective]
+[\-\-orthographic]
+[\-\-speed-x \fIfloat\fP]
+[\-\-speed-y \fIfloat\fP]
+[\-\-speed-z \fIfloat\fP]
+[\-\-walk-direction \fIfloat\fP]
+[\-\-walk-speed \fIfloat\fP]
.SH DESCRIPTION
The \fIetruscanvenus\fP program shows a 3d immersion of a Klein bottle
that smoothly deforms between the Etruscan Venus surface, the Roman
.I etruscanvenus
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-install
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual
class, or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-delay \fImicroseconds\fP
+.B \-\-delay \fImicroseconds\fP
How much of a delay should be introduced between steps of the
animation. Default 10000, or 1/100th second.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.PP
The following four options are mutually exclusive. They determine how
the Klein bottle is displayed.
.TP 8
-.B \-mode random
+.B \-\-mode random
Display the Klein bottle in a random display mode (default).
.TP 8
-.B \-mode wireframe \fP(Shortcut: \fB\-wireframe\fP)
+.B \-\-mode wireframe \fP(Shortcut: \fB\-\-wireframe\fP)
Display the Klein bottle as a wireframe mesh.
.TP 8
-.B \-mode surface \fP(Shortcut: \fB\-surface\fP)
+.B \-\-mode surface \fP(Shortcut: \fB\-\-surface\fP)
Display the Klein bottle as a solid surface.
.TP 8
-.B \-mode transparent \fP(Shortcut: \fB\-transparent\fP)
+.B \-\-mode transparent \fP(Shortcut: \fB\-\-transparent\fP)
Display the Klein bottle as a transparent surface.
.PP
The following four options are mutually exclusive. They determine the
appearance of the Klein bottle.
.TP 8
-.B \-appearance random
+.B \-\-appearance random
Display the Klein bottle with a random appearance (default).
.TP 8
-.B \-appearance solid \fP(Shortcut: \fB\-solid\fP)
+.B \-\-appearance solid \fP(Shortcut: \fB\-\-solid\fP)
Display the Klein bottle as a solid object.
.TP 8
-.B \-appearance distance-bands \fP(Shortcut: \fB\-distance-bands\fP)
+.B \-\-appearance distance-bands \fP(Shortcut: \fB\-\-distance-bands\fP)
Display the Klein bottle as see-through bands that lie at increasing
distances from the origin (see above for an explanation).
.PP
.TP 8
-.B \-appearance direction-bands \fP(Shortcut: \fB\-direction-bands\fP)
+.B \-\-appearance direction-bands \fP(Shortcut: \fB\-\-direction-bands\fP)
Display the Klein bottle as see-through bands that lie at increasing
angles with respect to the origin (see above for an explanation).
.PP
The following five options are mutually exclusive. They determine how
to color the Klein bottle.
.TP 8
-.B \-colors random
+.B \-\-colors random
Display the Klein bottle with a random color scheme (default).
.TP 8
-.B \-colors onesided \fP(Shortcut: \fB\-onesided-colors\fP)
+.B \-\-colors onesided \fP(Shortcut: \fB\-\-onesided-colors\fP)
Display the Klein bottle with a single color.
.TP 8
-.B \-colors twosided \fP(Shortcut: \fB\-twosided-colors\fP)
+.B \-\-colors twosided \fP(Shortcut: \fB\-\-twosided-colors\fP)
Display the Klein bottle with two colors: one color on one "side" and
the complementary color on the "other side."
.TP 8
-.B \-colors distance \fP(Shortcut: \fB\-distance-colors\fP)
+.B \-\-colors distance \fP(Shortcut: \fB\-\-distance-colors\fP)
Display the Klein bottle with fully saturated colors that depend on
the distance of the points on the projective plane to the origin (see
above for an explanation). If the Klein bottle is displayed as
distance bands, each band will be displayed with a different color.
.TP 8
-.B \-colors direction \fP(Shortcut: \fB\-direction-colors\fP)
+.B \-\-colors direction \fP(Shortcut: \fB\-\-direction-colors\fP)
Display the Klein bottle with fully saturated colors that depend on
the angle of the points on the projective plane with respect to the
origin (see above for an explanation). If the Klein bottle is
The following options determine whether the colors with which the
Klein bottle are displayed are static or are changing dynamically.
.TP 8
-.B \-change-colors
+.B \-\-change-colors
Change the colors with which the Klein bottle is displayed
dynamically (default).
.TP 8
-.B \-no-change-colors
+.B \-\-no-change-colors
Use static colors to display the Klein bottle.
.PP
The following three options are mutually exclusive. They determine
how to view the Klein bottle.
.TP 8
-.B \-view-mode random
+.B \-\-view-mode random
View the Klein bottle in a random view mode (default). The walking
mode will be randomly selected in approximately 10% of the cases.
.TP 8
-.B \-view-mode turn \fP(Shortcut: \fB\-turn\fP)
+.B \-\-view-mode turn \fP(Shortcut: \fB\-\-turn\fP)
View the Klein bottle while it turns in 3d.
.TP 8
-.B \-view-mode walk \fP(Shortcut: \fB\-walk\fP)
+.B \-\-view-mode walk \fP(Shortcut: \fB\-\-walk\fP)
View the Klein bottle as if walking on its surface.
.PP
The following options determine whether the surface is being deformed.
.TP 8
-.B \-deform
+.B \-\-deform
Deform the surface smoothly between the Etruscan Venus surface, the
Roman surface, the Boy surface surface, and the Ida surface (default).
.TP 8
-.B \-no-deform
+.B \-\-no-deform
Don't deform the surface.
.PP
The following option determines the deformation speed.
.TP 8
-.B \-deformation-speed \fIfloat\fP
+.B \-\-deformation-speed \fIfloat\fP
The deformation speed is measured in percent of some sensible maximum
speed (default: 10.0).
.PP
The following options determine the initial deformation of the
surface. As described above, this is mostly useful if
-\fB\-no-deform\fP is specified.
+\fB\-\-no-deform\fP is specified.
.TP 8
-.B \-initial-deformation \fIfloat\fP
+.B \-\-initial-deformation \fIfloat\fP
The initial deformation is specified as a number between 0 and 4000.
A value of 0 corresponds to the Etruscan Venus surface, a value of
1000 to the Roman surface, a value of 2000 to the Boy surface, and a
value of 3000 to the Ida surface. The default value is 0.
.TP 8
-.B \-etruscan-venus
-This is a shortcut for \fB\-initial-deformation 0\fP.
+.B \-\-etruscan-venus
+This is a shortcut for \fB\-\-initial-deformation 0\fP.
.TP 8
-.B \-roman
-This is a shortcut for \fB\-initial-deformation 1000\fP.
+.B \-\-roman
+This is a shortcut for \fB\-\-initial-deformation 1000\fP.
.TP 8
-.B \-boy
-This is a shortcut for \fB\-initial-deformation 2000\fP.
+.B \-\-boy
+This is a shortcut for \fB\-\-initial-deformation 2000\fP.
.TP 8
-.B \-ida
-This is a shortcut for \fB\-initial-deformation 3000\fP.
+.B \-\-ida
+This is a shortcut for \fB\-\-initial-deformation 3000\fP.
.PP
The following options determine whether orientation marks are shown on
the Klein bottle.
.TP 8
-.B \-orientation-marks
+.B \-\-orientation-marks
Display orientation marks on the Klein bottle.
.TP 8
-.B \-no-orientation-marks
+.B \-\-no-orientation-marks
Don't display orientation marks on the Klein bottle (default).
.PP
The following three options are mutually exclusive. They determine
how the Klain bottle is projected from 3d to 2d (i.e., to the screen).
.TP 8
-.B \-projection random
+.B \-\-projection random
Project the Klein bottle from 3d to 2d using a random projection mode
(default).
.TP 8
-.B \-projection perspective \fP(Shortcut: \fB\-perspective\fP)
+.B \-\-projection perspective \fP(Shortcut: \fB\-\-perspective\fP)
Project the Klein bottle from 3d to 2d using a perspective projection.
.TP 8
-.B \-projection orthographic \fP(Shortcut: \fB\-orthographic\fP)
+.B \-\-projection orthographic \fP(Shortcut: \fB\-\-orthographic\fP)
Project the Klein bottle from 3d to 2d using an orthographic
projection.
.PP
values, e.g., less than 4 in magnitude. In walk mode, all speeds are
ignored.
.TP 8
-.B \-speed-x \fIfloat\fP
+.B \-\-speed-x \fIfloat\fP
Rotation speed around the x axis (default: 1.1).
.TP 8
-.B \-speed-y \fIfloat\fP
+.B \-\-speed-y \fIfloat\fP
Rotation speed around the y axis (default: 1.3).
.TP 8
-.B \-speed-z \fIfloat\fP
+.B \-\-speed-z \fIfloat\fP
Rotation speed around the z axis (default: 1.5).
.PP
The following two options determine the walking speed and direction.
.TP 8
-.B \-walk-direction \fIfloat\fP
+.B \-\-walk-direction \fIfloat\fP
The walking direction is measured as an angle in degrees in the 2d
square that forms the coordinate system of the surface of the Klein
bottle (default: 83.0). A value of 0 or 180 means that the walk is
path along the surface. As noted above, walking is performed only on
the Ida surface.
.TP 8
-.B \-walk-speed \fIfloat\fP
+.B \-\-walk-speed \fIfloat\fP
The walking speed is measured in percent of some sensible maximum
speed (default: 20.0).
.SH INTERACTION
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
extrusion \- various rotating extruded shapes.
.SH SYNOPSIS
.B extrusion
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-name \fIwhich\fP]
-[\-no-light]
-[\-wireframe]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-name \fIwhich\fP]
+[\-\-no-light]
+[\-\-wireframe]
+[\-\-fps]
.SH DESCRIPTION
Draws various rotating extruded shapes that twist around, lengthen, and
turn inside out.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 10000 (0.01 seconds.).
.TP 8
-.B \-name \fIwhich\fP
+.B \-\-name \fIwhich\fP
Which object to draw. Choices are: helix2, helix3, helix4, joinoffset,
screw, taper, and twistoid.
.TP 8
-.B \-light | \-no-light
+.B \-\-light | \-\-no-light
Whether to light the scene, or use flat coloring.
.TP 8
-.B \-bitmap \fIfile\fP
+.B \-\-bitmap \fIfile\fP
The texture map to use.
.TP 8
-.B \-wireframe
+.B \-\-wireframe
Render in wireframe instead of solid.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
flipflop \- draws a grid of 3D squares that change positions
.SH SYNOPSIS
.B flipflop
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-count \fInumber\fP | \-free \fInumber\fP]
-[\-size \fInumber\fP]
-[\-size-x \fInumber\fP]
-[\-size-y \fInumber\fP]
-[\-spin \fInumber\fP]
-[\-mode sticks | tiles]
-[\-delay \fInumber\fP]
-[\-wireframe]
-[\-fps]
-[\-texture]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-count \fInumber\fP | \-\-free \fInumber\fP]
+[\-\-size \fInumber\fP]
+[\-\-size-x \fInumber\fP]
+[\-\-size-y \fInumber\fP]
+[\-\-spin \fInumber\fP]
+[\-\-mode sticks | tiles]
+[\-\-delay \fInumber\fP]
+[\-\-wireframe]
+[\-\-fps]
+[\-\-texture]
.SH DESCRIPTION
Flipflop draws a grid of 3D colored tiles that change positions with
each other.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-count \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-count \fInumber\fP
Number of tiles on the board. A value of "0" means "default". The
default number of tiles depends on the size of the board and the mode:
95% of total tiles for "tiles" mode and 80% of total sticks for
"sticks" mode (e.g. 76 tiles or 64 sticks for a 9x9 board).
.TP 8
-.B \-free \fInumber\fP
+.B \-\-free \fInumber\fP
Number of tiles missing from the board. See -count.
.TP 8
-.B \-size \fInumber\fP
+.B \-\-size \fInumber\fP
Number of tiles on each side of the board. Takes precedence over
-size-x and -size-y. Default: 9.
.TP 8
-.B \-size-x \fInumber\fP
+.B \-\-size-x \fInumber\fP
Width (in tiles) of the board. Default: 9.
.TP 8
-.B \-size-y \fInumber\fP
+.B \-\-size-y \fInumber\fP
Length (in tiles) of the board. Default: 9.
.TP 8
-.B \-spin \fInumber\fP
+.B \-\-spin \fInumber\fP
Angular velocity for the rotation of the board.
.TP 8
-.B \-mode sticks
+.B \-\-mode sticks
Draw hopping sticks instead of flipping tiles.
.TP 8
-.B \-mode tiles
+.B \-\-mode tiles
Draw flipping tiles. This is the default.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 20000 (0.02 seconds.).
.TP 8
-.B \-fps | \-no\-fps
+.B \-\-fps | \-\-no\-fps
Display the current frame rate, CPU load, and polygon count.
.TP 8
-.B \-wireframe
+.B \-\-wireframe
Only draw outlines.
.TP 8
-.B \-texture | \-no\-texture
+.B \-\-texture | \-\-no\-texture
Whether to texture the tiles with a screen grab or an image.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
flipscreen3d \- rotates an image of the screen through 3 dimensions.
.SH SYNOPSIS
.B flipscreen3d
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-no-rotate]
-[\-wireframe]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-no-rotate]
+[\-\-wireframe]
+[\-\-fps]
.SH DESCRIPTION
Grabs an image of the desktop, turns it into a GL texture map, and spins it
around and deforms it in various ways.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 20000 (0.02 seconds.).
.TP 8
-.B \-rotate | \-no-rotate
+.B \-\-rotate | \-\-no-rotate
Whether to rotate.
.TP 8
-.B \-wireframe
+.B \-\-wireframe
Just render boxes instead of textures (for debugging).
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
fliptext \- draws pages of text whose lines transparently flip around
.SH SYNOPSIS
.B fliptext
-[\-display \fIhost:display.screen\fP] [\-window] [\-root]
-[\-visual \fIvisual\fP]
-[\-delay \fImicroseconds\fP]
-[\-program \fIcommand\fP]
-[\-size \fIinteger\fP ]
-[\-columns \fIinteger\fP]
-[\-left | \-center | \-right]
-[\-lines \fIinteger\fP]
-[\-speed \fIfloat\fP]
-[\-delay \fIusecs\fP]
-[\-font \fIxlfd\fP]
-[\-wireframe]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-delay \fImicroseconds\fP]
+[\-\-program \fIcommand\fP]
+[\-\-size \fIinteger\fP ]
+[\-\-columns \fIinteger\fP]
+[\-\-left | \-\-center | \-\-right]
+[\-\-lines \fIinteger\fP]
+[\-\-speed \fIfloat\fP]
+[\-\-delay \fIusecs\fP]
+[\-\-font \fIxlfd\fP]
+[\-\-wireframe]
+[\-\-fps]
.SH DESCRIPTION
The \fIfliptext\fP program runs another program to generate a stream of
text, then animates the lines of that text transparently flipping in
.I fliptext
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-install
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP\fP
+.B \-\-visual \fIvisual\fP\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-program \fIsh-command\fP
+.B \-\-program \fIsh-command\fP
This program will be run periodically, and its output will be the text
that is displayed. Default \fIxscreensaver\-text\fP.
.BR xscreensaver\-settings (1),
or by editing your ~/.xscreensaver file.
.TP 8
-.B \-size \fIinteger\fP
+.B \-\-size \fIinteger\fP
How large a font to use, in points. (Well, in some arbitrary unit
we're calling "points" for the sake of argument.) Default: 20.
.TP 8
-.B \-columns \fIinteger\fP
+.B \-\-columns \fIinteger\fP
At (approximately) what column to wrap lines. Default 80. Wrapping is
done by pixels, not characters, and lines will always wrap at the
edge of the screen regardless.
.TP 8
-.B \-left | \-center | \-right
+.B \-\-left | \-\-center | \-\-right
Whether to align the text flush left, centered, or flush right.
The default is to choose randomly each time a new screen of text
is displayed.
.TP 8
-.B \-lines \fIinteger\fP
+.B \-\-lines \fIinteger\fP
How many lines of text should be shown at once. Default 8.
.TP 8
-.B \-speed \fIratio\fP
+.B \-\-speed \fIratio\fP
Change the animation speed; 0.5 to go half as fast, 2.0 to go twice as fast.
.TP 8
-.B \-delay \fIusecs\fP
+.B \-\-delay \fIusecs\fP
The delay between frames of the animation; default is 10000 (1/10th second.)
.TP 8
-.B \-font \fIfont-name\fP
+.B \-\-font \fIfont-name\fP
The name of the font to use. For best effect, this should be a large
font (at least 36 points.) The bigger the font, the better looking the
characters will be. Note that the size of this font affects only the
clarity of the characters, not their size on the screen: for that, use
-the \fI\-size\fP or \fI\-columns\fP options.
+the \fI\-\-size\fP or \fI\-\-columns\fP options.
Default: -*-utopia-bold-r-normal-*-*-720-*-*-*-*-iso8859-1
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR xscreensaver (1),
.BR xscreensaver\-text (MANSUFFIX),
flurry \- a colorful particle system
.SH SYNOPSIS
.B flurry
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-preset <arg>]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-preset <arg>]
+[\-\-fps]
.SH DESCRIPTION
This is a port of the OSX screensaver flurry.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-preset <arg>
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-preset <arg>
Select a preset (classic, fire, water, psychedelic, rgb, binary, random, insane)
(Insane will never be selected at random, because it requires lots of CPU/GPU
power)
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.TP 8
.SH ENVIRONMENT
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
flyingtoasters \- 3d space-age jet-powered flying toasters (and toast)
.SH SYNOPSIS
.B flyingtoasters
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-speed \fInumber\fP]
-[\-ntoasters \fInumber\fP]
-[\-nslices \fInumber\fP]
-[\-no-texture]
-[\-no-fog]
-[\-wireframe]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-speed \fInumber\fP]
+[\-\-ntoasters \fInumber\fP]
+[\-\-nslices \fInumber\fP]
+[\-\-no-texture]
+[\-\-no-fog]
+[\-\-wireframe]
+[\-\-fps]
.SH DESCRIPTION
Draws a squadron of shiny 3D space-age jet-powered flying toasters, and
associated toast, flying across your screen.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 30000 (0.03 seconds.).
.TP 8
-.B \-speed \fInumber\fP
+.B \-\-speed \fInumber\fP
How fast the toasters fly. Larger for faster. Default: 1.0.
.TP 8
-.B \-ntoasters \fInumber\fP
+.B \-\-ntoasters \fInumber\fP
How many toasters to draw. Default 20.
.TP 8
-.B \-nslices \fInumber\fP
+.B \-\-nslices \fInumber\fP
How many slices of toast to draw. Default 25.
.TP 8
-.B \-no-texture
+.B \-\-no-texture
Turn off texture mapping (for slow machines.)
.TP 8
-.B \-no-fog
+.B \-\-no-fog
Turn off fog (do not fade out distant toasters.)
.TP 8
-.B \-wireframe
+.B \-\-wireframe
Render in wireframe instead of solid.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
gears \- draw interlocking gears, for xscreensaver.
.SH SYNOPSIS
.B gears
-[\-display \fIhost:display.screen\fP] [\-window] [\-root] [\-install]
-[\-visual \fIvisual\fP]
-[\-delay \fIusecs\fP]
-[\-speed \fIfloat\fP]
-[\-no\-spin]
-[\-no\-wander]
+[\-\-display \fIhost:display.screen\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-install]
+[\-\-visual \fIvisual\fP]
+[\-\-delay \fIusecs\fP]
+[\-\-speed \fIfloat\fP]
+[\-\-no\-spin]
+[\-\-no\-wander]
[-count \fIinteger\fP]
[-wireframe]
[-fps]
.I gears
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-install
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-delay \fIusecs\fP
+.B \-\-delay \fIusecs\fP
The delay between frames of the animation, in microseconds.
Default: 30000 (0.03 seconds.)
.TP 8
-.B \-speed \fIfloat\fP
+.B \-\-speed \fIfloat\fP
Larger numbers mean run faster. Default: 1.0.
.TP 8
-.B \-no\-spin
+.B \-\-no\-spin
Don't rotate the object.
.TP 8
-.B \-no\-wander
+.B \-\-no\-wander
Don't wander the object around the screen.
.TP 8
-.B \-count \fIinteger\fP
+.B \-\-count \fIinteger\fP
How many gears to draw. Default: 0 for random.
.TP 8
-.B \-wireframe
+.B \-\-wireframe
Render in wireframe instead of solid.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
geodesic \- animates a mesh geodesic sphere.
.SH SYNOPSIS
.B geodesic
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-mode \fImode\fP]
-[\-no-wander]
-[\-no-spin]
-[\-fps]
-[\-delay \fInumber\fP]
-[\-speed \fInumber\fP]
-[\-count \fInumber\fP]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-mode \fImode\fP]
+[\-\-no-wander]
+[\-\-no-spin]
+[\-\-fps]
+[\-\-delay \fInumber\fP]
+[\-\-speed \fInumber\fP]
+[\-\-count \fInumber\fP]
.SH DESCRIPTION
Animates a mesh geodesic sphere of increasing and decreasing complexity. A
geodesic sphere is an icosohedron whose equilateral faces are sub-divided
approximate the surface of a sphere.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-mode mesh | solid | stellated | stellated2 | wire
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-mode mesh | solid | stellated | stellated2 | wire
Face/edge display style. Default mesh.
.TP 8
-.B \-wander | \-no-wander
+.B \-\-wander | \-\-no-wander
Whether the object should wander around the screen.
.TP 8
-.B \-spin | \-no-spin
+.B \-\-spin | \-\-no-spin
Whether the object should spin.
.TP 8
-.B \-fps | \-no-fps
+.B \-\-fps | \-\-no-fps
Whether to show a frames-per-second display at the bottom of the screen.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 30000 (0.03 seconds).
.TP 8
-.B \-speed \fInumber\fP
+.B \-\-speed \fInumber\fP
Animation speed. 2.0 means twice as fast, 0.5 means half as fast.
.TP 8
-.B \-count \fInumber\fP
+.B \-\-count \fInumber\fP
Depth (frequency) of the geodesic sphere. Default: 4.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
geodesicgears \- gears on the surface of a sphere.
.SH SYNOPSIS
.B geodesicgears
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-timeout \fInumber\fP]
-[\-labels]
-[\-numbers]
-[\-wireframe]
-[\-wander]
-[\-no-spin]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-timeout \fInumber\fP]
+[\-\-labels]
+[\-\-numbers]
+[\-\-wireframe]
+[\-\-wander]
+[\-\-no-spin]
+[\-\-fps]
.SH DESCRIPTION
A set of meshed gears arranged on the surface of a sphere.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 30000 (0.03 seconds).
.TP 8
-.B \-timeout \fInumber\fP
+.B \-\-timeout \fInumber\fP
Duration before switching to a new model. 5 - 120 seconds. Default: 20.
.TP 8
-.B \-labels | \-no-labels
+.B \-\-labels | \-\-no-labels
Whether to show the number of gears and teeth. Default: no.
.TP 8
-.B \-numbers | \-no-numbers
+.B \-\-numbers | \-\-no-numbers
Whether to label the gears with ID numbers. Default: no.
.TP 8
-.B \-wireframe | \-no-wireframe
+.B \-\-wireframe | \-\-no-wireframe
Render in wireframe instead of solid.
.TP 8
-.B \-wander | \-no-wander
+.B \-\-wander | \-\-no-wander
Whether the object should wander around the screen.
.TP 8
-.B \-spin | \-no-spin
+.B \-\-spin | \-\-no-spin
Whether the object should spin.
.TP 8
-.B \-fps | \-no-fps
+.B \-\-fps | \-\-no-fps
Whether to show a frames-per-second display at the bottom of the screen.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1),
gflux \- rippling surface graphics hack
.SH SYNOPSIS
.B gflux
-[\-display \fIhost:display.screen\fP] [\-window] [\-root] [\-install]
-[\-visual \fIvisual\fP] [\-delay \fImicroseconds\fP]
-[\-squares \fInum\fP] [\-resolution \fInum\fP] [\-mode \fImode\fP]
-[\-flat \fInum\fP] [\-speed \fInum\fP]
-[\-rotationx \fInum\fP] [\-rotationy \fInum\fP] [\-rotationz \fInum\fP]
-[\-waves \fInum\fP] [\-waveChange \fInum\fP] [\-waveHeight \fInum\fP]
-[\-waveFreq \fInum\fP] [\-zoom \fInum\fP]
-[\-wireframe]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-install]
+[\-\-visual \fIvisual\fP] [\-\-delay \fImicroseconds\fP]
+[\-\-squares \fInum\fP] [\-\-resolution \fInum\fP] [\-\-mode \fImode\fP]
+[\-\-flat \fInum\fP] [\-\-speed \fInum\fP]
+[\-\-rotationx \fInum\fP] [\-\-rotationy \fInum\fP] [\-\-rotationz \fInum\fP]
+[\-\-waves \fInum\fP] [\-\-waveChange \fInum\fP] [\-\-waveHeight \fInum\fP]
+[\-\-waveFreq \fInum\fP] [\-\-zoom \fInum\fP]
+[\-\-wireframe]
+[\-\-fps]
.SH DESCRIPTION
The \fIgflux\fP program draws a colourfull animated rippling square rotating in 3D space.
.SH OPTIONS
.I gflux
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-install
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP\fP
+.B \-\-visual \fIvisual\fP\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-squares \fInum\fP\fP
+.B \-\-squares \fInum\fP\fP
Specifies the size of the grid in squares. default 19
.TP 8
-.B \-resolution \fInum\fP\fP
+.B \-\-resolution \fInum\fP\fP
Specifies the wireframe detail of the squares. default 4
.TP 8
-.B \-mode \fImode\fP\fP
+.B \-\-mode \fImode\fP\fP
Specifies the draw method: wireframe; solid (meaning a solid colored
surface); light (same as solid, but with lighting effects);
checker (a texture-mapped checkerboard pattern); or grab (meaning
.BR xscreensaver\-settings (1)
for more details.
.TP 8
-.B \-wireframe
+.B \-\-wireframe
Same as "-mode wire".
.TP 8
-.B \-flat \fInum\fP\fP
+.B \-\-flat \fInum\fP\fP
0 for smooth shading 1 for flat. default 0
.TP 8
-.B \-speed \fInum\fP\fP
+.B \-\-speed \fInum\fP\fP
Specifies speed of ripples flowing over the surface. default 0.05
.TP 8
-.B \-rotationx \fInum\fP \-rotationy \fInum\fP \-rotationz \fInum\fP\fP
+.B \-\-rotationx \fInum\fP \-\-rotationy \fInum\fP \-\-rotationz \fInum\fP\fP
Specifies the speed of rotation of the surface in these axis
.TP 8
-.B \-waves \fInum\fP\fP
+.B \-\-waves \fInum\fP\fP
Specifies the number of ripple centres at any one time. Values should be greater than 1. default 3
.TP 8
-.B \-waveChange \fInum\fP\fP
+.B \-\-waveChange \fInum\fP\fP
Specifies the duration of a ripple centre. after this they fade away to be reborn elsewhere with a different frequency. default 50
.TP 8
-.B \-waveHeight \fInum\fP\fP
+.B \-\-waveHeight \fInum\fP\fP
Specifies the height of ripples on the surface. default 1.0
.TP 8
-.B \-waveFreq \fInum\fP\fP
+.B \-\-waveFreq \fInum\fP\fP
Specifies the maximum frequency of ripples. default 3.0
.TP 8
-.B \-zoom \fInum\fP\fP
+.B \-\-zoom \fInum\fP\fP
Specifies the size of the viewport. Smaller values fill the screen with rippling surface. default 1.0
.TP 8
-.B \-delay \fImicroseconds\fP
+.B \-\-delay \fImicroseconds\fP
How long to pause between frames. Default is 20000, or 0.02 second.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
gibson \- Hacking the Gibson screen saver.
.SH SYNOPSIS
.B gibson
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-speed \fInumber\fP]
-[\-grid-width \fInumber\fP]
-[\-grid-depth \fInumber\fP]
-[\-grid-height \fInumber\fP]
-[\-grid-spacing \fInumber\fP]
-[\-columns \fInumber\fP]
-[\-no-texture]
-[\-wireframe]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-speed \fInumber\fP]
+[\-\-grid-width \fInumber\fP]
+[\-\-grid-depth \fInumber\fP]
+[\-\-grid-height \fInumber\fP]
+[\-\-grid-spacing \fInumber\fP]
+[\-\-columns \fInumber\fP]
+[\-\-no-texture]
+[\-\-wireframe]
+[\-\-fps]
.SH DESCRIPTION
Hacking the Gibson, as per the 1995 classic film, \fIHACKERS\fP.
for their own ends. These people, they are terrorists."
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 20000 (0.02 seconds).
.TP 8
-.B \-speed \fInumber\fP
+.B \-\-speed \fInumber\fP
Animation speed. 2.0 means twice as fast, 0.5 means half as fast.
.TP 8
-.B \-grid-width \fInumber\fP
+.B \-\-grid-width \fInumber\fP
Number of towers across. 1 - 20. Default: 10.
.TP 8
-.B \-grid-depth \fInumber\fP
+.B \-\-grid-depth \fInumber\fP
Number of towers deep. 1 - 20. Default: 10.
.TP 8
-.B \-grid-height \fInumber\fP
+.B \-\-grid-height \fInumber\fP
Height of the towers. 1 - 20. Default: 7.
.TP 8
-.B \-grid-spacing \fInumber\fP
+.B \-\-grid-spacing \fInumber\fP
Space between towers. 1 - 5. Default: 2.0.
.TP 8
-.B \-columns \fInumber\fP
+.B \-\-columns \fInumber\fP
Columns of text on the towers. 1 - 20. Default: 6.
.TP 8
-.B \-texture | \-no-texture
+.B \-\-texture | \-\-no-texture
Whether to draw text. Default true.
.TP 8
-.B \-wireframe | \-no-wireframe
+.B \-\-wireframe | \-\-no-wireframe
Render in wireframe instead of solid.
.TP 8
-.B \-fps | \-no-fps
+.B \-\-fps | \-\-no-fps
Whether to show a frames-per-second display at the bottom of the screen.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
glblur \- 3D radial blur texture fields
.SH SYNOPSIS
.B glblur
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-blursize \fInumber\fP]
-[\-no-wander]
-[\-no-spin]
-[\-spin \fI[XYZ]\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-blursize \fInumber\fP]
+[\-\-no-wander]
+[\-\-no-spin]
+[\-\-spin \fI[XYZ]\fP]
+[\-\-fps]
.SH DESCRIPTION
This program draws a box and a few line segments, and generates a
radial blur outward from it. This creates flowing field effects.
hardware-accelerated texture support. It will hurt your machine bad.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 10000 (0.01 seconds.).
.TP 8
-.B \-blursize \fInumber\fP
+.B \-\-blursize \fInumber\fP
How many copies of the scene should be laid down to make the vapor trail.
Default: 15. Larger numbers create smoother fields, but are slower.
.TP 8
-.B \-wander | \-no-wander
+.B \-\-wander | \-\-no-wander
Whether the object should wander around the screen.
.TP 8
-.B \-spin [XYZ]
+.B \-\-spin [XYZ]
Around which axes should the object spin?
.TP 8
-.B \-no-spin
+.B \-\-no-spin
None.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
glcells \- growing cells graphics hack
.SH SYNOPSIS
.B glcells
-[\-display \fIhost:display.screen\fP] [\-window] [\-root] [\-install]
-[\-visual \fIvisual\fP]
-[\-delay \fInum\fP] [\-pause \fInum\fP] [\-maxcells \fInum\fP]
-[\-radius \fInum\fP] [\-seeds \fInum\fP] [\-quality \fInum\fP]
-[\-minfood \fInum\fP] [\-maxfood \fInum\fP] [\-divideage \fInum\fP]
-[\-mindist \fInum\fP]
-[\-keepold]
-[\-wireframe]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-install]
+[\-\-visual \fIvisual\fP]
+[\-\-delay \fInum\fP] [\-\-pause \fInum\fP] [\-\-maxcells \fInum\fP]
+[\-\-radius \fInum\fP] [\-\-seeds \fInum\fP] [\-\-quality \fInum\fP]
+[\-\-minfood \fInum\fP] [\-\-maxfood \fInum\fP] [\-\-divideage \fInum\fP]
+[\-\-mindist \fInum\fP]
+[\-\-keepold]
+[\-\-wireframe]
+[\-\-fps]
.SH DESCRIPTION
The \fIglcells\fP program draws cells that divide exponentially, eat and eventually die.
.SH OPTIONS
.I glcells
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-install
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP\fP
+.B \-\-visual \fIvisual\fP\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-pause \fInum\fP\fP
+.B \-\-pause \fInum\fP\fP
Specifies the pause at the end of the animation (all cells dead or maximum amount of cells reached). Unit is in frames, default 20.
.TP 8
-.B \-maxcells \fInum\fP\fP
+.B \-\-maxcells \fInum\fP\fP
Specifies the maximum number of cells on screen (dead cells also count, even if invisible). Default is 800.
.TP 8
-.B \-radius \fInum\fP\fP
+.B \-\-radius \fInum\fP\fP
Specifies the radius of the cells. Default is 40.
.TP 8
-.B \-seeds \fInum\fP\fP
+.B \-\-seeds \fInum\fP\fP
Specifies the number of cells when animation starts. Default is 1.
.TP 8
-.B \-quality \fInum\fP\fP
+.B \-\-quality \fInum\fP\fP
Specifies subdivision quality of the spheres used to draw the cells [0...5]. Default is 3.
.TP 8
-.B \-minfood \fInum\fP\fP
+.B \-\-minfood \fInum\fP\fP
Food is ditributed randomly on the screen (Yes, the cells need to eat). This parameter specifies the
minimum amount of food per pixel. Default is 5.
.TP 8
-.B \-maxfood \fInum\fP\fP
+.B \-\-maxfood \fInum\fP\fP
Food is ditributed randomly on the screen (Yes, the cells need to eat). This parameter specifies the
maximum amount of food per pixel. Default is 20.
.TP 8
-.B \-divideage \fInum\fP\fP
+.B \-\-divideage \fInum\fP\fP
Specifies the minimum age in frames a cell needs to have before being able to divide. Default is 20
.TP 8
-.B \-mindist \fInum\fP\fP
+.B \-\-mindist \fInum\fP\fP
Specifies the minimum distance between cells. Default 1.4
.TP 8
-.B \-delay \fInum\fP
+.B \-\-delay \fInum\fP
How long to pause between frames. Default is 20000, or 0.02 second.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.TP 8
-.B \-wireframe
+.B \-\-wireframe
Draw wireframe only.
.TP 8
-.B \-keepold
+.B \-\-keepold
Dead cells stay on screen.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
gleidescope \- a tiled OpenGL kaleidescope
.SH SYNOPSIS
.B gleidescope
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
[-delay \fInumber\fP]
[-move]
[-rotate]
A tiled kaleidescope using OpenGL.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 20000 (0.02 seconds.).
.TP 8
-.B \-move
+.B \-\-move
Move the camera.
.TP 8
-.B \-rotate
+.B \-\-rotate
Rotate the camera.
.TP 8
-.B \-zoom
+.B \-\-zoom
Zoom the camera in and out.
.TP 8
-.B \-image \fIfile\fP
+.B \-\-image \fIfile\fP
The texture map to use at the end of the kaleidescope.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.TP 8
-.B \-size \fInumber\fP
+.B \-\-size \fInumber\fP
The size of the hexagons being displayed [1(small)-10(large)]
.TP 8
-.B \-duration \fInumber\fP
+.B \-\-duration \fInumber\fP
The time in seconds before another image is chosen.
.TP 8
.SH ENVIRONMENT
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
glforestfire \- draws a GL animation of sprinkling fire-like 3D triangles
.SH SYNOPSIS
.B glforestfire
-[\-display \fIhost:display.screen\fP] [\-window] [\-root]
-[\-visual \fIvisual\fP] [\-delay \fImicroseconds\fP]
-[\-count \fInumber_of_particles\fP]
-[\-trees \fInumber_of_trees\fP]
-[\-size \fIviewport_size\fP]
-[\-texture] [\-no-texture]
-[\-shadows] [\-no-shadows]
-[\-fog] [\-no-fog]
-[\-wireframe] [\-no-wireframe]
-[\-wander] [\-no-wander]
-[\-trackmouse] [\-no-trackmouse]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-visual \fIvisual\fP] [\-\-delay \fImicroseconds\fP]
+[\-\-count \fInumber_of_particles\fP]
+[\-\-trees \fInumber_of_trees\fP]
+[\-\-size \fIviewport_size\fP]
+[\-\-texture] [\-\-no-texture]
+[\-\-shadows] [\-\-no-shadows]
+[\-\-fog] [\-\-no-fog]
+[\-\-wireframe] [\-\-no-wireframe]
+[\-\-wander] [\-\-no-wander]
+[\-\-trackmouse] [\-\-no-trackmouse]
+[\-\-fps]
.SH DESCRIPTION
The \fIglforestfire\fP program draws an animation of sprinkling fire-like 3D triangles in
a landscape filled with trees.
.I glforestfire
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-install
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP\fP
+.B \-\-visual \fIvisual\fP\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.TP 8
-.B \-trees \fInumber_of_trees\fP\fP
+.B \-\-trees \fInumber_of_trees\fP\fP
Specify how much trees are drawn in the landscape.
.TP 8
-.B \-count \fInumber_of_particles\fP\fP
+.B \-\-count \fInumber_of_particles\fP\fP
Specify how much fire particles are drawn. A very special case is 0
wich means that you get
.B rain
!
.TP 8
-.B \-size \fIviewport_size\fP\fP
+.B \-\-size \fIviewport_size\fP\fP
Viewport of GL scene is specified size if greater than 32 and less than screensize. Default value is 0, meaning full screensize.
.TP 8
-.B \-texture
+.B \-\-texture
Show a textured ground and the trees. This is the default.
.TP 8
-.B \-no\-texture
+.B \-\-no\-texture
Disables texturing the landscape. This implies that no trees are drawn.
.TP 8
-.B \-shadows
+.B \-\-shadows
Show a shadow for each particle on the ground. This is the default.
.TP 8
-.B \-no\-shadows
+.B \-\-no\-shadows
Disables the drawing of the shadows.
.TP 8
-.B \-fog
+.B \-\-fog
Show a fog in the distance.
.TP 8
-.B \-no\-fog
+.B \-\-no\-fog
Disables the fog. This is the default.
.TP 8
-.B \-wander
+.B \-\-wander
Move the observer around the landscape. This is the default.
.TP 8
-.B \-no\-wander
+.B \-\-no\-wander
Keep the fire centered on the screen.
.TP 8
-.B \-trackmouse
+.B \-\-trackmouse
Let the mouse be a joystick to change the view of the landscape.
This implies
-.I \-no\-wander.
+.I \-\-no\-wander.
.TP 8
-.B \-no\-trackmouse
+.B \-\-no\-trackmouse
Disables mouse tracking. This is the default.
.TP 8
-.B \-wire
+.B \-\-wire
Draw a wireframe rendition of the fire: this will consist only of
single-pixel lines for the triangles.
.SH ENVIRONMENT
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
glhanoi \- OpenGL Towers of Hanoi
.SH SYNOPSIS
.B glhanoi
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-count \fInumber\fP]
-[\-poles \fInumber\fP]
-[\-speed \fInumber\fP]
-[\-wireframe]
-[\-light]
-[\-texture]
-[\-fog]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-count \fInumber\fP]
+[\-\-poles \fInumber\fP]
+[\-\-speed \fInumber\fP]
+[\-\-wireframe]
+[\-\-light]
+[\-\-texture]
+[\-\-fog]
+[\-\-fps]
.SH DESCRIPTION
Implementation of Towers of Hanoi in OpenGL
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 30000 (0.03 seconds.).
.TP 8
-.B \-count \fInumber\fP
+.B \-\-count \fInumber\fP
Number of disks. Default: 7.
.TP 8
-.B \-poles \fInumber\fP
+.B \-\-poles \fInumber\fP
Number of poles. Default: random from 3 to disks+1.
.TP 8
-.B \-speed \fInumber\fP
+.B \-\-speed \fInumber\fP
Speed multiplier (for smallest disks). Default: 1.
.TP 8
-.B \-trails \fInumber\fP
+.B \-\-trails \fInumber\fP
Length of disk trails, in seconds. Default: 2.
.TP 8
-.B \-wireframe | \-no-wireframe
+.B \-\-wireframe | \-\-no-wireframe
Render in wireframe instead of solid.
.TP 8
-.B \-fog | \-no-fog
+.B \-\-fog | \-\-no-fog
Render in fog.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.TP 8
-.B \-light | -no-light
+.B \-\-light | -no-light
Whether the scene is lit.
.TP 8
-.B \-texture | \-no-texture
+.B \-\-texture | \-\-no-texture
Render with textures instead of solid.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
glknots \- generates some twisting 3d knot patterns
.SH SYNOPSIS
.B glknots
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-speed \fIfloat\fP]
-[\-segments \fIint\fP]
-[\-thickness \fIfloat\fP]
-[\-duration \fIseconds\fP]
-[\-no-wander]
-[\-spin \fIXYZ\fP]
-[\-wireframe]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-speed \fIfloat\fP]
+[\-\-segments \fIint\fP]
+[\-\-thickness \fIfloat\fP]
+[\-\-duration \fIseconds\fP]
+[\-\-no-wander]
+[\-\-spin \fIXYZ\fP]
+[\-\-wireframe]
+[\-\-fps]
.SH DESCRIPTION
Generates some twisting 3d knot patterns. Spins 'em around.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 30000 (0.03 seconds.).
.TP 8
-.B \-speed \fInumber\fP
+.B \-\-speed \fInumber\fP
Larger numbers mean run faster. Default: 1.0.
.TP 8
-.B \-segments \fInumber\fP
+.B \-\-segments \fInumber\fP
Number of segments in each path. Default 800. Larger numbers make the
curves smoother, at the expense of a higher polygon count.
.TP 8
-.B \-thickness \fIfloat\fP
+.B \-\-thickness \fIfloat\fP
How thick the tubes should be. Default 0.3.
.TP 8
-.B \-duration \fIseconds\fP
+.B \-\-duration \fIseconds\fP
How long to leave each knot up. Default 8 seconds.
.TP 8
-.B \-wander | \-no-wander
+.B \-\-wander | \-\-no-wander
Whether the cubes should wander around the screen.
.TP 8
-.B \-spin [XYZ] | \-no-spin
+.B \-\-spin [XYZ] | \-\-no-spin
Which axes, if any, to spin around on.
.TP 8
-.B \-wireframe | \-no-wireframe
+.B \-\-wireframe | \-\-no-wireframe
Render in wireframe instead of solid.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
glmatrix \- simulates the title sequence effect of the movie
.SH SYNOPSIS
.B glmatrix
-[\-display \fIhost:display.screen\fP] [\-window] [\-root] [\-install]
-[\-visual \fIvisual\fP]
-[\-delay \fIusecs\fP]
-[\-speed \fIratio\fP]
-[\-density \fIpct\fP]
-[\-no\-fog]
-[\-no\-waves]
-[\-no\-rotate]
-[\-binary]
-[\-hexadecimal]
-[\-dna]
-[\-clock]
-[\-timefmt \fIfmt\fP]
-[\-wireframe]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-install]
+[\-\-visual \fIvisual\fP]
+[\-\-delay \fIusecs\fP]
+[\-\-speed \fIratio\fP]
+[\-\-density \fIpct\fP]
+[\-\-no\-fog]
+[\-\-no\-waves]
+[\-\-no\-rotate]
+[\-\-binary]
+[\-\-hexadecimal]
+[\-\-dna]
+[\-\-clock]
+[\-\-timefmt \fIfmt\fP]
+[\-\-wireframe]
+[\-\-fps]
.SH DESCRIPTION
The \fIglmatrix\fP program draws the 3D "digital rain" effect, as seen
in the title sequence of the Wachowski brothers' film, "The Matrix".
.I glmatrix
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-install
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP\fP
+.B \-\-visual \fIvisual\fP\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-delay \fIusecs\fP
+.B \-\-delay \fIusecs\fP
The delay between frames of the animation, in microseconds: default 30000.
.TP 8
-.B \-speed \fIratio\fP
+.B \-\-speed \fIratio\fP
How fast the glyphs should move; default 1.0. 2.0 means twice as fast,
0.5 means half as fast.
.TP 8
-.B \-density \fIpercentage\fP
+.B \-\-density \fIpercentage\fP
The approximate percentage of the screen that should be filled with
characters at any given time. Default 20%.
.TP 8
-.B \-no\-fog
+.B \-\-no\-fog
By default, glyphs are dimmer the farther away they are. This
argument disables that.
.TP 8
-.B \-no\-waves
+.B \-\-no\-waves
By default, waves of color roll down the columns of glyphs. This
argument disables that.
.TP 8
-.B \-no-rotate\fP
+.B \-\-no-rotate\fP
By default, the scene slowly tilts and rotates. This
argument disables that.
.TP 8
-.B \-binary\fP
+.B \-\-binary\fP
Instead of displaying Matrix glyphs, only display ones and zeros.
.TP 8
-.B \-hexadecimal\fP
+.B \-\-hexadecimal\fP
Instead of displaying Matrix glyphs, display hexadecimal digits.
.TP 8
-.B \-dna\fP
+.B \-\-dna\fP
Instead of displaying Matrix glyphs, display genetic code
(guanine, adenine, thymine, and cytosine.)
.TP 8
-.B \-clock\fP
+.B \-\-clock\fP
Hide a clock displaying the current time somewhere in the glyphs.
.TP 8
-.B \-timefmt\fP \fIstrftime-string\fP
-How to format the clock when \fI\-clock\fP is specified.
+.B \-\-timefmt\fP \fIstrftime-string\fP
+How to format the clock when \fI\-\-clock\fP is specified.
Default "\ %l%M%p\ ".
.TP 8
-.B \-speed \fIratio\fP
+.B \-\-speed \fIratio\fP
Less than 1 for slower, greater than 1 for faster. Default 1.
.TP 8
-.B \-wireframe
+.B \-\-wireframe
Just draw boxes instead of textured characters.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR xmatrix (MANSUFFIX),
.BR X (1),
glplanet \- rotating 3d texture-mapped planet.
.SH SYNOPSIS
.B glplanet
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-image \fIfile\fP]
-[\-image2 \fIfile\fP]
-[\-mode \fIstring\fP]
-[\-resolution \fInumber\fP]
-[\-wireframe]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-image \fIfile\fP]
+[\-\-image2 \fIfile\fP]
+[\-\-mode \fIstring\fP]
+[\-\-resolution \fInumber\fP]
+[\-\-wireframe]
+[\-\-fps]
.SH DESCRIPTION
Draws a planet bouncing around in space. The built-in images are day and
night maps of the Earth, but you can wrap any Equirectangular-projected
with \fIssystem.\fP
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 20000 (0.02 seconds.).
.TP 8
-.B \-image \fIfile\fP
+.B \-\-image \fIfile\fP
The day texture map to wrap around the planet's surface.
.TP 8
-.B \-image2 \fIfile\fP
+.B \-\-image2 \fIfile\fP
The night texture map to wrap around the planet's surface.
The two will be blended together at the dusk terminator.
.TP 8
-.B \-mode globe
+.B \-\-mode globe
All is right with the world.
.TP 8
-.B \-mode equirectangular
+.B \-\-mode equirectangular
Wat.
.TP 8
-.B \-mode mercator
+.B \-\-mode mercator
Good day, Sir. I said GOOD DAY.
.TP 8
-.B \-resolution
+.B \-\-resolution
The resolution of the planetary mesh. Default: 128.
.TP 8
-.B \-wireframe
+.B \-\-wireframe
Render in wireframe instead of solid.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
glschool \- a 3D schooling simulation
.SH SYNOPSIS
.B glschool
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-wireframe]
-[\-fps]
-[\-delay \fInumber\fP]
-[\-nfish \fInumber\fP]
-[\-maxvel \fInumber\fP]
-[\-minvel \fInumber\fP]
-[\-acclimit \fInumber\fP]
-[\-avoidfact \fInumber\fP]
-[\-matchfact \fInumber\fP]
-[\-centerfact \fInumber\fP]
-[\-targetfact \fInumber\fP]
-[\-minradius \fInumber\fP]
-[\-momentum \fInumber\fP]
-[\-distexp \fInumber\fP]
-[\-goalchgf \fInumber\fP]
-[\-fog]
-[\-drawgoal]
-[\-drawbbox]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-wireframe]
+[\-\-fps]
+[\-\-delay \fInumber\fP]
+[\-\-nfish \fInumber\fP]
+[\-\-maxvel \fInumber\fP]
+[\-\-minvel \fInumber\fP]
+[\-\-acclimit \fInumber\fP]
+[\-\-avoidfact \fInumber\fP]
+[\-\-matchfact \fInumber\fP]
+[\-\-centerfact \fInumber\fP]
+[\-\-targetfact \fInumber\fP]
+[\-\-minradius \fInumber\fP]
+[\-\-momentum \fInumber\fP]
+[\-\-distexp \fInumber\fP]
+[\-\-goalchgf \fInumber\fP]
+[\-\-fog]
+[\-\-drawgoal]
+[\-\-drawbbox]
.SH DESCRIPTION
Uses the Craig Reynolds \fIBoids\fP algorithm to simulate a 3D school of
fish. This is a lightly modified version of the algorithm that supports
25 or so.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 20000 (0.020 seconds.).
.TP 8
-.B \-wireframe | \-no-wireframe
+.B \-\-wireframe | \-\-no-wireframe
Render in wireframe instead of solid.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.TP 8
-.B \-fog | \-no-fog
+.B \-\-fog | \-\-no-fog
Whether to show foggy (cloudy) water.
.TP 8
-.B \-drawgoal | \-no-drawgoal
+.B \-\-drawgoal | \-\-no-drawgoal
Whether to show the school's attraction goal.
.TP 8
-.B \-drawbbox | \-no-drawbbox
+.B \-\-drawbbox | \-\-no-drawbbox
Whether to show the bounding box.
.TP 8
-.B \-fog | \-no-fog
+.B \-\-fog | \-\-no-fog
Whether to show foggy (cloudy) water.
.TP 8
-.B \-nfish \fInumber\fP
+.B \-\-nfish \fInumber\fP
Number of fish. Defaults to 100
.TP 8
-.B \-acclimit \fInumber\fP
+.B \-\-acclimit \fInumber\fP
Acceleration limit. Defaults to 8.0
.TP 8
-.B \-minvel \fInumber\fP
+.B \-\-minvel \fInumber\fP
Minimum velocity. Defaults to 1.0
.TP 8
-.B \-maxvel \fInumber\fP
+.B \-\-maxvel \fInumber\fP
Minimum velocity. Defaults to 7.0
.TP 8
-.B \-goalchgf \fInumber\fP
+.B \-\-goalchgf \fInumber\fP
Goal change frequency. Defaults to 50 (frames)
.TP 8
-.B \-avoidfact \fInumber\fP
+.B \-\-avoidfact \fInumber\fP
Avoidance acceleration factor. Defaults to 1.5
.TP 8
-.B \-matchfact \fInumber\fP
+.B \-\-matchfact \fInumber\fP
Match avg velocity acceleration factor. Defaults to 0.15
.TP 8
-.B \-centerfact \fInumber\fP
+.B \-\-centerfact \fInumber\fP
School centering acceleration factor. Defaults to 0.1
.TP 8
-.B \-targetfact \fInumber\fP
+.B \-\-targetfact \fInumber\fP
Target attraction acceleration factor. Defaults to 80
.TP 8
-.B \-distexp \fInumber\fP
+.B \-\-distexp \fInumber\fP
Distance weighting exponent. Defaults to 2.2
.TP 8
-.B \-momentum \fInumber\fP
+.B \-\-momentum \fInumber\fP
Momentum. Defaults to 0.9
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1),
glslideshow \- slideshow of images using smooth zooming and fades
.SH SYNOPSIS
.B glslideshow
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-duration \fIseconds\fP]
-[\-zoom \fIpercent\fP]
-[\-pan \fIseconds\fP]
-[\-fade \fIseconds\fP]
-[\-titles]
-[\-letterbox | \-clip]
-[\-delay \fIusecs\fP]
-[\-fps]
-[\-debug]
-[\-wireframe]
-[\-cutoff \fIint\fP]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-duration \fIseconds\fP]
+[\-\-zoom \fIpercent\fP]
+[\-\-pan \fIseconds\fP]
+[\-\-fade \fIseconds\fP]
+[\-\-titles]
+[\-\-letterbox | \-\-clip]
+[\-\-delay \fIusecs\fP]
+[\-\-fps]
+[\-\-debug]
+[\-\-wireframe]
+[\-\-cutoff \fIint\fP]
.SH DESCRIPTION
Loads a random sequence of images and smoothly scans and zooms around
in each, fading from pan to pan.
and click on the "Advanced" tab.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-duration \fIseconds\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-duration \fIseconds\fP
How long each image will be displayed before loading a new one.
Default 30 seconds.
.TP 8
-.B \-pan \fIseconds\fP
+.B \-\-pan \fIseconds\fP
How long each pan-and-zoom should last. Default 6 seconds.
-With the default settings of \fI\-pan 6 \-duration 30\fP, each image
+With the default settings of \fI\-\-pan 6 \-\-duration 30\fP, each image
will be displayed five times (30/6), and then a new image will be loaded.
-If you want a new image to be loaded at each fade, then set \fI\-pan\fP
-and \fI\-duration\fP to the same value.
+If you want a new image to be loaded at each fade, then set \fI\-\-pan\fP
+and \fI\-\-duration\fP to the same value.
.TP 8
-.B \-fade \fIseconds\fP
+.B \-\-fade \fIseconds\fP
How long each cross-fade between images should last. Default 2 seconds.
If set to 0, then no cross-fading will be done (all transitions
will be jump-cuts.)
-Note that fades are included in the pan time, so \fI\-fade\fP cannot
-be larger than \fI\-pan\fP.
+Note that fades are included in the pan time, so \fI\-\-fade\fP cannot
+be larger than \fI\-\-pan\fP.
.TP 8
-.B \-zoom \fInumber\fP
+.B \-\-zoom \fInumber\fP
Amount to zoom and pan as a percentage. Default: 75, meaning that
75% or more of each image will always be visible. If set to 100%,
then the images will always fill the screen, and no panning or
zooming will occur. (Images will still smoothly fade from one
-to another if \fI\-fade\fP is non-zero.)
+to another if \fI\-\-fade\fP is non-zero.)
.TP 8
-.B \-titles
+.B \-\-titles
Whether to print the file name of the current image in the upper left corner.
.TP 8
-.B \-letterbox
+.B \-\-letterbox
In "letterbox" mode, when an image is not the same aspect ratio as the screen,
black bars will appear at the top/bottom or left/right so that the whole
image can be displayed. This is the default.
.TP 8
-.B \-clip
+.B \-\-clip
In "clip" mode, when an image is not the same aspect ratio as the screen,
we will zoom in further until the image takes up the whole screen.
-This is the opposite of \fI\-letterbox\fP.
+This is the opposite of \fI\-\-letterbox\fP.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 20000 (0.02 seconds.).
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.TP 8
-.B \-cutoff \fInumber\fP
+.B \-\-cutoff \fInumber\fP
If the frame rate we are achieving is lower than this, then panning,
fading, and zooming will be disabled. Default 5 FPS.
rate, then it must not have fast 3D hardware, so we might as well
behave in a simpler manner. Set this to 0 to disable this check.
.TP 8
-.B \-debug
+.B \-\-debug
Prints debugging info to stderr.
.TP 8
-.B \-wireframe
+.B \-\-wireframe
Another debug mode.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver\-settings (1),
glsnake \- OpenGL enhanced Rubik's Snake cyclewaster.
.SH SYNOPSIS
.B glsnake
-[\-display \fIhost:display.screen\fP] [\-window] [\-root]
-[\-visual \fIvisual\fP] [\-delay \fImicroseconds\fP] [\-fps]
-[\-wireframe] [\-altcolour]
-[\-angvel \fIangular\fP]
-[\-explode \fIdistance\fP]
-[\-statictime \fImilliseconds\fP]
-[\-yangvel \fIangle\fP]
-[\-zangvel \fIangle\fP]
+[\-\-display \fIhost:display.screen\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-visual \fIvisual\fP] [\-\-delay \fImicroseconds\fP] [\-\-fps]
+[\-\-wireframe] [\-\-altcolour]
+[\-\-angvel \fIangular\fP]
+[\-\-explode \fIdistance\fP]
+[\-\-statictime \fImilliseconds\fP]
+[\-\-yangvel \fIangle\fP]
+[\-\-zangvel \fIangle\fP]
.SH DESCRIPTION
.PP
.B glsnake
.I glsnake
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-install
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP\fP
+.B \-\-visual \fIvisual\fP\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.TP 8
-.B \-wireframe
+.B \-\-wireframe
Display the snake in wireframe mode, rather than the default solid mode.
.TP 8
-.B \-altcolour
+.B \-\-altcolour
Use the alternate colour scheme for the snake. Shape identification using
colour will be disabled.
.TP 8
.B -explode \fIdistance\fP
Change the distance between the nodes of a snake.
.TP 8
-.B \-statictime \fImilliseconds\fP
+.B \-\-statictime \fImilliseconds\fP
Change the time between morphs.
.TP 8
-.B \-yangvel \fIangle\fP
+.B \-\-yangvel \fIangle\fP
Change the angle of rotation around the Y axis per frame.
.TP 8
-.B \-zangvel \fIangle\fP
+.B \-\-zangvel \fIangle\fP
Change the angle of rotation around the Z axis per frame.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1),
gltext \- draws text spinning around in 3D
.SH SYNOPSIS
.B gltext
-[\-display \fIhost:display.screen\fP] [\-window] [\-root]
-[\-visual \fIvisual\fP] [\-delay \fImicroseconds\fP]
-[\-text \fIstring\fP]
-[\-program \fIcommand\fP]
-[\-wander] [\-no-wander]
-[\-spin \fIaxes\fP]
-[\-no-spin]
-[\-front] [\-no\-front]
-[\-wireframe]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-visual \fIvisual\fP] [\-\-delay \fImicroseconds\fP]
+[\-\-text \fIstring\fP]
+[\-\-program \fIcommand\fP]
+[\-\-wander] [\-\-no-wander]
+[\-\-spin \fIaxes\fP]
+[\-\-no-spin]
+[\-\-front] [\-\-no\-front]
+[\-\-wireframe]
+[\-\-fps]
.SH DESCRIPTION
The \fIgltext\fP program draws some text spinning around in 3D, using
a font that appears to be made of solid tubes.
.I gltext
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-install
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP\fP
+.B \-\-visual \fIvisual\fP\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-text \fIstring\fP
+.B \-\-text \fIstring\fP
The text to display. This may contain newlines, but it shouldn't be
very long. The default is to display the machine name and OS version.
.BR strftime (3)
for more details.
.TP 8
-.B \-program \fIcommand\fP
+.B \-\-program \fIcommand\fP
The given program is run, and its output is displayed.
-If specified, this overrides \fI\-text\fP.
+If specified, this overrides \fI\-\-text\fP.
The output of this program will be repeatedely displayed, with new
pages of text shifting in every few seconds. Lines should be relatively
short. You might try:
.sp
.fi
.TP 8
-.B \-maxlines
+.B \-\-maxlines
Set the number of lines of text to display. By default,
.I gltext
will print 8 lines of text at a time. Use this option to increase or
value too high might result in slow performance or strange behaviour
stemming from buffer overflows. Increase at your own risk.
.TP 8
-.B \-mono
+.B \-\-mono
Display the text in a monospace font. Default is a variable-width font.
.TP 8
-.B \-no\-mono
+.B \-\-no\-mono
Display the text in a variable-width font. This is the default.
.TP 8
-.B \-wander
+.B \-\-wander
Move the text around the screen. This is the default.
.TP 8
-.B \-no\-wander
+.B \-\-no\-wander
Keep the text centered on the screen.
.TP 8
-.B \-wander\-speed
+.B \-\-wander\-speed
Sets the speed at which the text wanders around. Default is 0.02.
.TP 8
-.B \-spin
+.B \-\-spin
Which axes around which the text should spin. The default is "XYZ",
-meaning rotate it freely in space. "\fB\-spin Z\fP" would rotate the
+meaning rotate it freely in space. "\fB\-\-spin Z\fP" would rotate the
text in the plane of the screen while not rotating it into or out
of the screen; etc.
.TP 8
-.B \-no\-spin
-Don't spin the text at all: the same as \fB\-spin ""\fP.
+.B \-\-no\-spin
+Don't spin the text at all: the same as \fB\-\-spin ""\fP.
.TP 8
-.B \-front
+.B \-\-front
When spinning, never spin all the way around or upside down:
always face mostly forward so that the text is easily readable.
.TP 8
-.B \-no\-front
+.B \-\-no\-front
Allow spins to go all the way around or upside down. This is the default.
.TP 8
-.B \-wireframe
+.B \-\-wireframe
Render in wireframe instead of solid.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.TP 8
-.B \-scale
+.B \-\-scale
Sets the scale at which the text is rendered. Bigger values will result
in bigger text; smaller values will result in smaller text. The default
value is 0.01.
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
gravitywell \- spaaaaace.
.SH SYNOPSIS
.B gravitywell
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-speed \fInumber\fP]
-[\-resolution \fInumber\fP]
-[\-grid-size \fInumber\fP]
-[\-count \fInumber\fP]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-speed \fInumber\fP]
+[\-\-resolution \fInumber\fP]
+[\-\-grid-size \fInumber\fP]
+[\-\-count \fInumber\fP]
.SH DESCRIPTION
Massive objects distort space in a two dimensional universe.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 30000 (0.03 seconds).
.TP 8
-.B \-speed \fInumber\fP
+.B \-\-speed \fInumber\fP
Animation speed. 2.0 means twice as fast, 0.5 means half as fast.
.TP 8
-.B \-resolution \fInumber\fP
+.B \-\-resolution \fInumber\fP
Density of the underlying universe. Default: 1.0.
.TP 8
-.B \-grid-size \fInumber\fP
+.B \-\-grid-size \fInumber\fP
Grid Size. Smaller values are more dense. Default: 1.0.
.TP 8
-.B \-count \fInumber\fP
+.B \-\-count \fInumber\fP
Number of stars. Default: 15.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
handsy \- some hands.
.SH SYNOPSIS
.B handsy
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-speed \fInumber\fP]
-[\-count \fInumber\fP]
-[\-no-wander]
-[\-no-spin]
-[\-no-front]
-[\-wireframe]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-speed \fInumber\fP]
+[\-\-count \fInumber\fP]
+[\-\-no-wander]
+[\-\-no-spin]
+[\-\-no-front]
+[\-\-wireframe]
+[\-\-fps]
.SH DESCRIPTION
A set of robotic hands communicate non-verbally.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 30000 (0.03 seconds).
.TP 8
-.B \-speed \fInumber\fP
+.B \-\-speed \fInumber\fP
Animation speed. 2.0 means twice as fast, 0.5 means half as fast.
.TP 8
-.B \-count \fInumber\fP
+.B \-\-count \fInumber\fP
Number of hands. 1 - 50. Default: 2.
.TP 8
-.B \-wander | \-no-wander
+.B \-\-wander | \-\-no-wander
Whether the hands should wander around the screen.
.TP 8
-.B \-spin | \-no-spin
+.B \-\-spin | \-\-no-spin
Whether the object should spin.
.TP 8
-.B \-front | \-no-front
+.B \-\-front | \-\-no-front
Whether to spin all the way around. Default: no.
.TP 8
-.B \-wireframe | \-no-wireframe
+.B \-\-wireframe | \-\-no-wireframe
Render in wireframe instead of solid.
.TP 8
-.B \-fps | \-no-fps
+.B \-\-fps | \-\-no-fps
Whether to show a frames-per-second display at the bottom of the screen.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
headroom \- a twitchy head.
.SH SYNOPSIS
.B headroom
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-speed \fInumber\fP]
-[\-spin \fI[XYZ]\fP]
-[\-no-wander]
-[\-no-mask]
-[\-wireframe]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-speed \fInumber\fP]
+[\-\-spin \fI[XYZ]\fP]
+[\-\-no-wander]
+[\-\-no-mask]
+[\-\-wireframe]
+[\-\-fps]
.SH DESCRIPTION
"Back in my day, we used to say 'No future'. Well. This is it."
-- Blank Reg
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 20000 (0.02 seconds).
.TP 8
-.B \-speed \fInumber\fP
+.B \-\-speed \fInumber\fP
Animation speed. 2.0 means twice as fast, 0.5 means half as fast.
.TP 8
-.B \-spin 0
+.B \-\-spin 0
Don't rotate.
.TP 8
-.B \-spin \fI[XYZ]\fP
+.B \-\-spin \fI[XYZ]\fP
Around which axes should the object spin?
.TP 8
-.B \-wander | \-no-wander
+.B \-\-wander | \-\-no-wander
Whether the object should wander around the screen.
.TP 8
-.B \-mask | \-no-mask
+.B \-\-mask | \-\-no-mask
Mask Headroom.
.TP 8
-.B \-wireframe | \-no-wireframe
+.B \-\-wireframe | \-\-no-wireframe
Render in wireframe instead of solid.
.TP 8
-.B \-fps | \-no-fps
+.B \-\-fps | \-\-no-fps
Whether to show a frames-per-second display at the bottom of the screen.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
hexstrut \- a grid of hexagons composed of rotating Y-shaped struts.
.SH SYNOPSIS
.B hexstrut
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-speed \fInumber\fP]
-[\-count \fInumber\fP]
-[\-thickness \fInumber\fP]
-[\-no-wander]
-[\-no-spin]
-[\-wireframe]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-speed \fInumber\fP]
+[\-\-count \fInumber\fP]
+[\-\-thickness \fInumber\fP]
+[\-\-no-wander]
+[\-\-no-spin]
+[\-\-wireframe]
+[\-\-fps]
.SH DESCRIPTION
A grid of hexagons composed of rotating Y-shaped struts.
Waves of rotation and color changes randomly propagate across the plane.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 30000 (0.03 seconds).
.TP 8
-.B \-speed \fInumber\fP
+.B \-\-speed \fInumber\fP
Animation speed. 2.0 means twice as fast, 0.5 means half as fast.
.TP 8
-.B \-count \fInumber\fP
+.B \-\-count \fInumber\fP
Approximate number of hexagons on the screen, horizontally. Default: 20.
.TP 8
-.B \-thickness \fInumber\fP
+.B \-\-thickness \fInumber\fP
Relative thickness of the struts. 0.01 - 1.7. Default: 0.2.
.TP 8
-.B \-wander | \-no-wander
+.B \-\-wander | \-\-no-wander
Whether the grid should wander around the screen.
.TP 8
-.B \-spin | \-no-spin
+.B \-\-spin | \-\-no-spin
Whether the grid should spin.
.TP 8
-.B \-wireframe | \-no-wireframe
+.B \-\-wireframe | \-\-no-wireframe
Render in wireframe instead of solid.
.TP 8
-.B \-fps | \-no-fps
+.B \-\-fps | \-\-no-fps
Whether to show a frames-per-second display at the bottom of the screen.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
hilbert \- 3D Hilbert fractal.
.SH SYNOPSIS
.B hilbert
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-speed \fIratio\fP]
-[\-depth \fInumber\fP]
-[\-spin]
-[\-wander]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-speed \fIratio\fP]
+[\-\-depth \fInumber\fP]
+[\-\-spin]
+[\-\-wander]
[\-2d]
[\-3d]
-[\-closed]
-[\-open]
-[\-max\-depth \fInumber\fP]
-[\-thickness \fIratio\fP]
-[\-wireframe]
-[\-fps]
+[\-\-closed]
+[\-\-open]
+[\-\-max\-depth \fInumber\fP]
+[\-\-thickness \fIratio\fP]
+[\-\-wireframe]
+[\-\-fps]
.SH DESCRIPTION
This draws the recursive Hilbert space-filling curve, in both 2D and
3D variants. It incrementally animates the growth and recursion to
reflects this.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 30000 (0.03 seconds.).
.TP 8
-.B \-speed \fInumber\fP
+.B \-\-speed \fInumber\fP
How fast the animation should run.
Less than 1 for slower, greater than 1 for faster.
.TP 8
-.B \-max\-depth \fInumber\fP
+.B \-\-max\-depth \fInumber\fP
Max depth to descend. Default: 5, which peaks at around half a
million polygons.
.TP 8
-.B \-spin
-.B \-no\-spin
+.B \-\-spin
+.B \-\-no\-spin
Whether to rotate the object. Default: true.
.TP 8
-.B \-wander
-.B \-no\-wander
+.B \-\-wander
+.B \-\-no\-wander
Whether to wander the object around on the screen. Default: false;
.TP 8
.B \-2d
.B \-3d
Whether to draw the 2D or 3D variant. Default: random.
.TP 8
-.B \-closed
-.B \-open
+.B \-\-closed
+.B \-\-open
Whether to draw the open or closed-path variant. Default: random.
.TP 8
-.B \-thickness \fIratio\fP
+.B \-\-thickness \fIratio\fP
How thick the lines should be. Default: 0.25.
.TP 8
-.B \-wireframe
+.B \-\-wireframe
Render in wireframe instead of solid.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
hydrostat \- Wiggly squid or jellyfish with many tentacles.
.SH SYNOPSIS
.B hydrostat
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-speed \fInumber\fP]
-[\-count \fInumber\fP]
-[\-head-radius \fInumber\fP]
-[\-tentacles \fInumber\fP]
-[\-thickness \fInumber\fP]
-[\-length \fInumber\fP]
-[\-gravity \fInumber\fP]
-[\-current \fInumber\fP]
-[\-friction \fInumber\fP]
-[\-no-pulse]
-[\-wireframe]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-speed \fInumber\fP]
+[\-\-count \fInumber\fP]
+[\-\-head-radius \fInumber\fP]
+[\-\-tentacles \fInumber\fP]
+[\-\-thickness \fInumber\fP]
+[\-\-length \fInumber\fP]
+[\-\-gravity \fInumber\fP]
+[\-\-current \fInumber\fP]
+[\-\-friction \fInumber\fP]
+[\-\-no-pulse]
+[\-\-wireframe]
+[\-\-fps]
.SH DESCRIPTION
Wiggly squid or jellyfish with many tentacles. A muscular hydrostat
is a biological structure used to move its host about, consisting of
skeleton.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 20000 (0.02 seconds).
.TP 8
-.B \-speed \fInumber\fP
+.B \-\-speed \fInumber\fP
Animation speed. 2.0 means twice as fast, 0.5 means half as fast.
.TP 8
-.B \-count \fInumber\fP
+.B \-\-count \fInumber\fP
Number of squid. 1 - 100. Default: 10.
.TP 8
-.B \-head-radius \fInumber\fP
+.B \-\-head-radius \fInumber\fP
Head size. 10 - 100. Default: 60.
.TP 8
-.B \-tentacles \fInumber\fP
+.B \-\-tentacles \fInumber\fP
Number of tentacles. 3 - 100. Default: 40.
.TP 8
-.B \-thickness \fInumber\fP
+.B \-\-thickness \fInumber\fP
Thickness of tentacles. 3 - 40. Default: 18.
.TP 8
-.B \-length \fInumber\fP
+.B \-\-length \fInumber\fP
Length of tentacles. 10 - 150. Default: 70.
.TP 8
-.B \-gravity \fInumber\fP
+.B \-\-gravity \fInumber\fP
Strength of gravity. 0 - 10.0. Default: 0.5.
.TP 8
-.B \-current \fInumber\fP
+.B \-\-current \fInumber\fP
Strength of current. 0.0 - 10.0. Default: 0.25.
.TP 8
-.B \-friction \fInumber\fP
+.B \-\-friction \fInumber\fP
Coefficient of friction. 0.0 - 0.1. Default: 0.02.
.TP 8
-.B \-pulse | \-no-pulse
+.B \-\-pulse | \-\-no-pulse
Whether the squid should pulse. Default true.
.TP 8
-.B \-wireframe | \-no-wireframe
+.B \-\-wireframe | \-\-no-wireframe
Render in wireframe instead of solid.
.TP 8
-.B \-fps | \-no-fps
+.B \-\-fps | \-\-no-fps
Whether to show a frames-per-second display at the bottom of the screen.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
hypertorus \- Draws a hypertorus that rotates in 4d
.SH SYNOPSIS
.B hypertorus
-[\-display \fIhost:display.screen\fP]
-[\-install]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fIusecs\fP]
-[\-fps]
-[\-wireframe]
-[\-surface]
-[\-transparent]
-[\-solid]
-[\-bands]
-[\-spirals-{1,2,4,8,16}]
-[\-onesided]
-[\-twosided]
-[\-colorwheel]
-[\-change-colors]
-[\-perspective-3d]
-[\-orthographic-3d]
-[\-perspective-4d]
-[\-orthographic-4d]
-[\-speed-wx \fIfloat\fP]
-[\-speed-wy \fIfloat\fP]
-[\-speed-wz \fIfloat\fP]
-[\-speed-xy \fIfloat\fP]
-[\-speed-xz \fIfloat\fP]
-[\-speed-yz \fIfloat\fP]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-install]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fIusecs\fP]
+[\-\-fps]
+[\-\-wireframe]
+[\-\-surface]
+[\-\-transparent]
+[\-\-solid]
+[\-\-bands]
+[\-\-spirals-{1,2,4,8,16}]
+[\-\-onesided]
+[\-\-twosided]
+[\-\-colorwheel]
+[\-\-change-colors]
+[\-\-perspective-3d]
+[\-\-orthographic-3d]
+[\-\-perspective-4d]
+[\-\-orthographic-4d]
+[\-\-speed-wx \fIfloat\fP]
+[\-\-speed-wy \fIfloat\fP]
+[\-\-speed-wz \fIfloat\fP]
+[\-\-speed-xy \fIfloat\fP]
+[\-\-speed-xz \fIfloat\fP]
+[\-\-speed-yz \fIfloat\fP]
.SH DESCRIPTION
The \fIhypertorus\fP program shows the Clifford torus as it rotates in
4d. The Clifford torus is a torus lies on the "surface" of the
.I hypertorus
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-install
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual
class, or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-delay \fImicroseconds\fP
+.B \-\-delay \fImicroseconds\fP
How much of a delay should be introduced between steps of the
animation. Default 25000, or 1/40th second.
.PP
The following three options are mutually exclusive. They determine
how the torus is displayed.
.TP 8
-.B \-wireframe
+.B \-\-wireframe
Display the torus as a wireframe mesh.
.TP 8
-.B \-surface
+.B \-\-surface
Display the torus as a solid surface (default).
.TP 8
-.B \-transparent
+.B \-\-transparent
Display the torus as a transparent surface.
.PP
The following seven options are mutually exclusive. They determine the
appearance of the torus.
.TP 8
-.B \-solid
+.B \-\-solid
Display the torus as a solid object.
.TP 8
-.B \-bands
+.B \-\-bands
Display the torus as see-through bands (default).
.TP 8
-.B \-spirals-1, \-spirals-2, \-spirals-4, \-spirals-8, \-spirals-16
+.B \-\-spirals-1, \-\-spirals-2, \-\-spirals-4, \-\-spirals-8, \-\-spirals-16
Display the torus as see-through spirals with the indicated number of
spirals.
.PP
The following three options are mutually exclusive. They determine
how to color the torus.
.TP 8
-.B \-onesided
+.B \-\-onesided
Display the torus with a single color.
.TP 8
-.B \-twosided
+.B \-\-twosided
Display the torus with two colors: one color on the outside and the
complementary on the inside. For static colors, the colors are red
and green.
.TP 8
-.B \-colorwheel
+.B \-\-colorwheel
Display the torus with a fully saturated color wheel (default). If
the torus is displayed as see-through bands, each band will be
displayed with a different color. Likewise, if the torus is displayed
The following options determine whether the colors with which the
torus is displayed are static or are changing dynamically.
.TP 8
-.B \-change-colors
+.B \-\-change-colors
Change the colors with which the torus is displayed dynamically.
.TP 8
-.B \-no-change-colors
+.B \-\-no-change-colors
Use static colors to display the torus (default).
.PP
The following two options are mutually exclusive. They determine how
the torus is projected from 3d to 2d (i.e., to the screen).
.TP 8
-.B \-perspective-3d
+.B \-\-perspective-3d
Project the torus from 3d to 2d using a perspective projection
(default).
.TP 8
-.B \-orthographic-3d
+.B \-\-orthographic-3d
Project the torus from 3d to 2d using an orthographic projection.
.PP
The following two options are mutually exclusive. They determine how
the torus is projected from 4d to 3d.
.TP 8
-.B \-perspective-4d
+.B \-\-perspective-4d
Project the torus from 4d to 3d using a perspective projection
(default).
.TP 8
-.B \-orthographic-4d
+.B \-\-orthographic-4d
Project the torus from 4d to 3d using an orthographic projection.
.PP
The following six options determine the rotation speed of the torus
in degrees per frame. The speeds should be set to relatively small
values, e.g., less than 4 in magnitude.
.TP 8
-.B \-speed-wx \fIfloat\fP
+.B \-\-speed-wx \fIfloat\fP
Rotation speed around the wx plane (default: 1.1).
.TP 8
-.B \-speed-wy \fIfloat\fP
+.B \-\-speed-wy \fIfloat\fP
Rotation speed around the wy plane (default: 1.3).
.TP 8
-.B \-speed-wz \fIfloat\fP
+.B \-\-speed-wz \fIfloat\fP
Rotation speed around the wz plane (default: 1.5).
.TP 8
-.B \-speed-xy \fIfloat\fP
+.B \-\-speed-xy \fIfloat\fP
Rotation speed around the xy plane (default: 1.7).
.TP 8
-.B \-speed-xz \fIfloat\fP
+.B \-\-speed-xz \fIfloat\fP
Rotation speed around the xz plane (default: 1.9).
.TP 8
-.B \-speed-yz \fIfloat\fP
+.B \-\-speed-yz \fIfloat\fP
Rotation speed around the yz plane (default: 2.1).
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.SH INTERACTION
If you run this program in standalone mode you can rotate the
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
hypnowheel \- draws overlapping, translucent spiral patterns
.SH SYNOPSIS
.B hypnowheel
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fIint\fP]
-[\-layers \fIint\fP]
-[\-count \fIint\fP]
-[\-twistiness \fIfloat\fP]
-[\-speed \fIfloat\fP]
-[\-wander\fP]
-[\-symmetric\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fIint\fP]
+[\-\-layers \fIint\fP]
+[\-\-count \fIint\fP]
+[\-\-twistiness \fIfloat\fP]
+[\-\-speed \fIfloat\fP]
+[\-\-wander\fP]
+[\-\-symmetric\fP]
+[\-\-fps]
.SH DESCRIPTION
Draws a series of overlapping, translucent spiral patterns.
The tightness of their spirals fluctuates in and out.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fIint\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fIint\fP
Delay between frames, in microseconds. Default 20000.
.TP 8
-.B \-layers \fIint\fP
+.B \-\-layers \fIint\fP
How many different spirals to draw at once. Default 4.
.TP 8
-.B \-count \fIint\fP
+.B \-\-count \fIint\fP
How many arms each spiral should have. Default 11.
.TP 8
-.B \-twistiness \fIfloat\fP
+.B \-\-twistiness \fIfloat\fP
How tightly wound the spirals can become, measured in rotations.
Default 4.0 (four times around).
.TP 8
-.B \-speed \fIratio\fP
+.B \-\-speed \fIratio\fP
Less than 1 for slower, greater than 1 for faster. Default 1.
.TP 8
-.B \-wander
+.B \-\-wander
If specified, then the centers of the spirals will wander around,
rather than them all having the same origin.
.TP 8
-.B \-symmetric
+.B \-\-symmetric
If specified, then each pair of left-wrapping and right-wrapping
spirals will be mirror images of each other.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
jigglypuff \- save your screen by tormenting your eyes.
.SH SYNOPSIS
.B jigglypuff
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
[-delay \fInumber\fP]
[-cycles \fInumber\fP]
[-wireframe]
mostly pointless options.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 20000 (0.02 seconds.).
.TP 8
-.B \-wireframe
+.B \-\-wireframe
Render in wireframe instead of solid. Default: render solid.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.TP 8
.B -tetra | -no-tetra
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
jigsaw \- permute an image like a jigsaw puzzle
.SH SYNOPSIS
.B jigsaw
-[\-display \fIhost:display.screen\fP]
-[\-delay \fIusecs\fP]
-[\-speed \fIratio\fP]
-[\-complexity \fIratio\fP]
-[\-resolution \fIint\fP]
-[\-thickness \fIfloat\fP]
-[\-no\-wobble]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-delay \fIusecs\fP]
+[\-\-speed \fIratio\fP]
+[\-\-complexity \fIratio\fP]
+[\-\-resolution \fIint\fP]
+[\-\-thickness \fIfloat\fP]
+[\-\-no\-wobble]
+[\-\-fps]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
.SH DESCRIPTION
The \fIjigsaw\fP program loads an image, carves it up into
a jigsaw puzzle, shuffles it, and then solves it.
.I jigsaw
accepts the following options:
.TP 8
-.B \-delay \fImicroseconds\fP
+.B \-\-delay \fImicroseconds\fP
How long to wait between animation frames; default 20000.
.TP 8
-.B \-speed \fIratio\fP
+.B \-\-speed \fIratio\fP
Less than 1 for slower, greater than 1 for faster. Default 1.
.TP 8
-.B \-complexity \fIratio\fP
+.B \-\-complexity \fIratio\fP
Less than 1 for simpler puzzles (fewer pieces), greater than 1 for
more complex puzzles (more pieces). Default 1.
.TP 8
-.B \-resolution \fIratio\fP
+.B \-\-resolution \fIratio\fP
Smoothness of the edges of the pieces. Less than 1 for rougher pieces
(fewer polygons), greater than 1 for more smoother pieces (more polygons).
Default 1.
.TP 8
-.B \-thickness \fIfloat\fP
+.B \-\-thickness \fIfloat\fP
Thickness of the puzzle pieces (relative to their width).
Default 0.06.
.TP 8
-.B \-no\-wobble
+.B \-\-no\-wobble
Keep the display stationary instead of very slowly wobbling back and forth.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, polygon count, and CPU load.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-install
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.SH ENVIRONMENT
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1),
juggler3d \- juggling man screen saver.
.SH SYNOPSIS
.B juggler3d
-[\-display host:display.screen ]
-[\-root ]
-[\-window ]
-[\-mono ]
-[\-install | \-noinstall ]
-[\-visual visual ]
-[\-window\-id id ]
-[\-pattern pattern ]
-[\-tail number ]
-[\-real | \-no\-real ]
-[\-describe | \-no\-describe ]
-[\-balls | \-no\-balls ]
-[\-clubs | \-no\-clubs ]
-[\-torches | \-no\-torches ]
-[\-knives | \-no\-knives ]
-[\-rings | \-no\-rings ]
-[\-bballs | \-no\-bballs ]
-[\-count count ]
-[\-cycles cycles ]
-[\-delay delay ]
-[\-ncolors ncolors ]
-[\-fps]
+[\-\-display host:display.screen ]
+[\-\-root ]
+[\-\-window\-id \fInumber\fP]
+[\-\-window ]
+[\-\-mono ]
+[\-\-install | \-\-noinstall ]
+[\-\-visual visual ]
+[\-\-window\-id id ]
+[\-\-pattern pattern ]
+[\-\-tail number ]
+[\-\-real | \-\-no\-real ]
+[\-\-describe | \-\-no\-describe ]
+[\-\-balls | \-\-no\-balls ]
+[\-\-clubs | \-\-no\-clubs ]
+[\-\-torches | \-\-no\-torches ]
+[\-\-knives | \-\-no\-knives ]
+[\-\-rings | \-\-no\-rings ]
+[\-\-bballs | \-\-no\-bballs ]
+[\-\-count count ]
+[\-\-cycles cycles ]
+[\-\-delay delay ]
+[\-\-ncolors ncolors ]
+[\-\-fps]
.SH DESCRIPTION
Draws a stick-man juggling various collections of objects.
.SH OPTIONS
.I juggler3d
accepts the following options:
.TP 8
-.B \-display host:display.screen
+.B \-\-display host:display.screen
X11 display to use. Overrides
.B DISPLAY
environment variable.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-window
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-window
Draw on a newly-created X window. This is the default.
.TP 8
-.B \-mono
+.B \-\-mono
Draw in monochrome.
.TP 8
-.B \-install | \-noinstall
+.B \-\-install | \-\-noinstall
Turn on/off installing colormap.
.TP 8
-.B \-visual visual
+.B \-\-visual visual
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window\-id id
+.B \-\-window\-id id
Draw on an already existing X window.
.TP 8
-.B \-pattern\ \(dq pattern \(dq
+.B \-\-pattern\ \(dq pattern \(dq
Specify juggling pattern in annotated
.B site-swap
notation. In
\&_ Bounce
.TE
.TP 8
-.B \-pattern\ \(dq[ pattern ]\(dq
+.B \-\-pattern\ \(dq[ pattern ]\(dq
Specify juggling pattern in annotated
.B Adam
notation. Adam notation is a little harder to visualize. Each
For example, both of these describe a 3\-Shower:
.IP
-.B \-pattern\ "+5 1"
+.B \-\-pattern\ "+5 1"
.IP
-.B \-pattern\ "[+3 1]"
+.B \-\-pattern\ "[+3 1]"
For further examples, see the
.B portfolio
list in the source code.
.TP 8
-.B \-tail number
+.B \-\-tail number
Minimum Trail Length. 0 \- 100. Default: 1. Objects may override
this, for example flaming torches always leave a trail.
.TP 8
-.BR \-real | \-no\-real
+.BR \-\-real | \-\-no\-real
Turn on/off real-time juggling.
.B Deprecated.
There should be no need to turn off real-time juggling, even on slow
systems. Adjust speed using
-.B \-count
+.B \-\-count
above.
.TP 8
-.BR \-describe | \-no\-describe
+.BR \-\-describe | \-\-no\-describe
Turn on/off pattern descriptions.
.TP 8
-.BR \-balls | \-no\-balls
+.BR \-\-balls | \-\-no\-balls
Turn on/off Balls.
.TP 8
-.BR \-clubs | \-no\-clubs
+.BR \-\-clubs | \-\-no\-clubs
Turn on/off Clubs.
.TP 8
-.BR \-torches | \-no\-torches
+.BR \-\-torches | \-\-no\-torches
Turn on/off Flaming Torches.
.TP 8
-.BR \-knives | \-no\-knives
+.BR \-\-knives | \-\-no\-knives
Turn on/off Knives.
.TP 8
-.BR \-rings | \-no\-rings
+.BR \-\-rings | \-\-no\-rings
Turn on/off Rings.
.TP 8
-.BR \-bballs | \-no\-bballs
+.BR \-\-bballs | \-\-no\-bballs
Turn on/off Bowling Balls.
.TP 8
-.B \-count number
+.B \-\-count number
Speed. 50 \- 1000. Default: 200. This determines the expected time
interval between a throw and the next catch, in milliseconds.
.TP 8
-.B \-cycles number
+.B \-\-cycles number
Performance Length. 50 \- 1000. Default: 1000. Setting this smaller
will force the juggler to switch patterns (and objects) more often.
.TP 8
-.B \-delay delay
+.B \-\-delay delay
Additional delay between frames, in microseconds. Default: 10000.
.B Deprecated.
Adjust speed using
-.BR \-count .
+.BR \-\-count .
.TP 8
-.B \-ncolors ncolors
+.B \-\-ncolors ncolors
Maximum number of colors to use. Default: 32.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
kaleidocycle \- draws twistable rings of tetrahedra
.SH SYNOPSIS
.B kaleidocycle
-[\-display \fIhost:display.screen\fP] [\-window] [\-root]
-[\-visual \fIvisual\fP] [\-delay \fImicroseconds\fP]
-[\-count \fInumber\fP]
-[\-speed \fInumber\fP]
-[\-wander] [\-no-wander]
-[\-spin \fIaxes\fP]
-[\-no-spin]
-[\-wireframe]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-visual \fIvisual\fP] [\-\-delay \fImicroseconds\fP]
+[\-\-count \fInumber\fP]
+[\-\-speed \fInumber\fP]
+[\-\-wander] [\-\-no-wander]
+[\-\-spin \fIaxes\fP]
+[\-\-no-spin]
+[\-\-wireframe]
+[\-\-fps]
.SH DESCRIPTION
The \fIkaleidocycle\fP program draws a ring composed of tetrahedra
connected at the edges that twists and rotates toroidally. Segments
.I kaleidocycle
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-install
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP\fP
+.B \-\-visual \fIvisual\fP\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-count \fInumber\fP
+.B \-\-count \fInumber\fP
The initial number of segments. Default 16. Must be 8 or greater, and
an even number.
.TP 8
-.B \-speed \fInumber\fP
+.B \-\-speed \fInumber\fP
Adjust the animation speed. 0.5 for half as fast, 2.0 for twice as fast.
.TP 8
-.B \-wander
+.B \-\-wander
Move the text around the screen. This is the default.
.TP 8
-.B \-no\-wander
+.B \-\-no\-wander
Keep the text centered on the screen.
.TP 8
-.B \-spin
+.B \-\-spin
Which axes around which the text should spin. The default is "Z",
meaning rotate the object the plane of the screen only.
.TP 8
-.B \-no\-spin
-Don't spin the text at all: the same as \fB\-spin ""\fP.
+.B \-\-no\-spin
+Don't spin the text at all: the same as \fB\-\-spin ""\fP.
.TP 8
-.B \-wireframe
+.B \-\-wireframe
Render in wireframe instead of solid.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
klein \- Draws a 4d Klein bottle.
.SH SYNOPSIS
.B klein
-[\-display \fIhost:display.screen\fP]
-[\-install]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fIusecs\fP]
-[\-fps]
-[\-klein-bottle \fIbottle-name\fP]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-install]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fIusecs\fP]
+[\-\-fps]
+[\-\-klein-bottle \fIbottle-name\fP]
[-figure-8]
[-pinched-torus]
[-lawson]
-[\-mode \fIdisplay-mode\fP]
-[\-wireframe]
-[\-surface]
-[\-transparent]
-[\-appearance \fIappearance\fP]
-[\-solid]
-[\-bands]
-[\-colors \fIcolor-scheme\fP]
-[\-onesided]
-[\-twosided]
-[\-rainbow]
-[\-depth]
-[\-change-colors]
-[\-view-mode \fIview-mode\fP]
-[\-walk]
-[\-turn]
-[\-walk-turn]
-[\-orientation-marks]
-[\-projection-3d \fImode\fP]
-[\-perspective-3d]
-[\-orthographic-3d]
-[\-projection-4d \fImode\fP]
-[\-perspective-4d]
-[\-orthographic-4d]
-[\-speed-wx \fIfloat\fP]
-[\-speed-wy \fIfloat\fP]
-[\-speed-wz \fIfloat\fP]
-[\-speed-xy \fIfloat\fP]
-[\-speed-xz \fIfloat\fP]
-[\-speed-yz \fIfloat\fP]
-[\-walk-direction \fIfloat\fP]
-[\-walk-speed \fIfloat\fP]
+[\-\-mode \fIdisplay-mode\fP]
+[\-\-wireframe]
+[\-\-surface]
+[\-\-transparent]
+[\-\-appearance \fIappearance\fP]
+[\-\-solid]
+[\-\-bands]
+[\-\-colors \fIcolor-scheme\fP]
+[\-\-onesided]
+[\-\-twosided]
+[\-\-rainbow]
+[\-\-depth]
+[\-\-change-colors]
+[\-\-view-mode \fIview-mode\fP]
+[\-\-walk]
+[\-\-turn]
+[\-\-walk-turn]
+[\-\-orientation-marks]
+[\-\-projection-3d \fImode\fP]
+[\-\-perspective-3d]
+[\-\-orthographic-3d]
+[\-\-projection-4d \fImode\fP]
+[\-\-perspective-4d]
+[\-\-orthographic-4d]
+[\-\-speed-wx \fIfloat\fP]
+[\-\-speed-wy \fIfloat\fP]
+[\-\-speed-wz \fIfloat\fP]
+[\-\-speed-xy \fIfloat\fP]
+[\-\-speed-xz \fIfloat\fP]
+[\-\-speed-yz \fIfloat\fP]
+[\-\-walk-direction \fIfloat\fP]
+[\-\-walk-speed \fIfloat\fP]
.SH DESCRIPTION
The \fIklein\fP program shows three different Klein bottles in 4d: the
figure-8 Klein bottle, the pinched torus Klein bottle, or the Lawson
.I klein
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-install
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual
class, or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-delay \fImicroseconds\fP
+.B \-\-delay \fImicroseconds\fP
How much of a delay should be introduced between steps of the
animation. Default 10000, or 1/100th second.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.PP
The following three options are mutually exclusive. They determine
which Klein bottle is displayed.
.TP 8
-.B \-klein-bottle random
+.B \-\-klein-bottle random
Display a random Klein bottle (default).
.TP 8
-.B \-klein-bottle figure-8 \fP(Shortcut: \fB\-figure-8\fP)
+.B \-\-klein-bottle figure-8 \fP(Shortcut: \fB\-\-figure-8\fP)
Display the figure-8 Klein bottle.
.TP 8
-.B \-klein-bottle pinched-torus \fP(Shortcut: \fB\-pinched-torus\fP)
+.B \-\-klein-bottle pinched-torus \fP(Shortcut: \fB\-\-pinched-torus\fP)
Display the pinched torus Klein bottle.
.TP 8
-.B \-klein-bottle lawson \fP(Shortcut: \fB\-lawson\fP)
+.B \-\-klein-bottle lawson \fP(Shortcut: \fB\-\-lawson\fP)
Display the Lawson Klein bottle.
.PP
The following four options are mutually exclusive. They determine
how the Klein bottle is displayed.
.TP 8
-.B \-mode random
+.B \-\-mode random
Display the Klein bottle in a random display mode (default).
.TP 8
-.B \-mode wireframe \fP(Shortcut: \fB\-wireframe\fP)
+.B \-\-mode wireframe \fP(Shortcut: \fB\-\-wireframe\fP)
Display the Klein bottle as a wireframe mesh.
.TP 8
-.B \-mode surface \fP(Shortcut: \fB\-surface\fP)
+.B \-\-mode surface \fP(Shortcut: \fB\-\-surface\fP)
Display the Klein bottle as a solid surface.
.TP 8
-.B \-mode transparent \fP(Shortcut: \fB\-transparent\fP)
+.B \-\-mode transparent \fP(Shortcut: \fB\-\-transparent\fP)
Display the Klein bottle as a transparent surface.
.PP
The following three options are mutually exclusive. They determine the
appearance of the Klein bottle.
.TP 8
-.B \-appearance random
+.B \-\-appearance random
Display the Klein bottle with a random appearance (default).
.TP 8
-.B \-appearance solid \fP(Shortcut: \fB\-solid\fP)
+.B \-\-appearance solid \fP(Shortcut: \fB\-\-solid\fP)
Display the Klein bottle as a solid object.
.TP 8
-.B \-appearance bands \fP(Shortcut: \fB\-bands\fP)
+.B \-\-appearance bands \fP(Shortcut: \fB\-\-bands\fP)
Display the Klein bottle as see-through bands.
.PP
The following five options are mutually exclusive. They determine
how to color the Klein bottle.
.TP 8
-.B \-colors random
+.B \-\-colors random
Display the Klein bottle with a random color scheme (default).
.TP 8
-.B \-colors one-sided \fP(Shortcut: \fB\-onesided\fP)
+.B \-\-colors one-sided \fP(Shortcut: \fB\-\-onesided\fP)
Display the Klein bottle with a single color.
.TP 8
-.B \-colors two-sided \fP(Shortcut: \fB\-twosided\fP)
+.B \-\-colors two-sided \fP(Shortcut: \fB\-\-twosided\fP)
Display the Klein bottle with two colors: one color one "side" and the
complementary color on the "other side." For static colors, the
colors are red and green.
.TP 8
-.B \-colors rainbow \fP(Shortcut: \fB\-rainbow\fP)
+.B \-\-colors rainbow \fP(Shortcut: \fB\-\-rainbow\fP)
Display the Klein bottle with fully saturated rainbow colors. If the
Klein bottle is displayed as see-through bands, each band will be
displayed with a different color.
.TP 8
-.B \-colors depth \fP(Shortcut: \fB\-depth\fP)
+.B \-\-colors depth \fP(Shortcut: \fB\-\-depth\fP)
Display the Klein bottle with colors chosen depending on the 4d
"depth" of the points.
.PP
The following options determine whether the colors with which the
Klein bottle is displayed are static or are changing dynamically.
.TP 8
-.B \-change-colors
+.B \-\-change-colors
Change the colors with which the Klein bottle is displayed
dynamically.
.TP 8
-.B \-no-change-colors
+.B \-\-no-change-colors
Use static colors to display the Klein bottle (default).
.PP
The following four options are mutually exclusive. They determine
how to view the Klein bottle.
.TP 8
-.B \-view-mode random
+.B \-\-view-mode random
View the Klein bottle in a random view mode (default).
.TP 8
-.B \-view-mode walk \fP(Shortcut: \fB\-walk\fP)
+.B \-\-view-mode walk \fP(Shortcut: \fB\-\-walk\fP)
View the Klein bottle as if walking on its surface.
.TP 8
-.B \-view-mode turn \fP(Shortcut: \fB\-turn\fP)
+.B \-\-view-mode turn \fP(Shortcut: \fB\-\-turn\fP)
View the Klein bottle while it turns in 4d.
.TP 8
-.B \-view-mode walk-turn \fP(Shortcut: \fB\-walk-turn\fP)
+.B \-\-view-mode walk-turn \fP(Shortcut: \fB\-\-walk-turn\fP)
View the Klein bottle as if walking on its surface. Additionally, the
Klein bottle turns around the true 4d planes (the xy, xz, and yz
planes).
The following options determine whether orientation marks are shown on
the Klein bottle.
.TP 8
-.B \-orientation-marks
+.B \-\-orientation-marks
Display orientation marks on the Klein bottle.
.TP 8
-.B \-no-orientation-marks
+.B \-\-no-orientation-marks
Don't display orientation marks on the Klein bottle (default).
.PP
The following three options are mutually exclusive. They determine
how the Klein bottle is projected from 3d to 2d (i.e., to the screen).
.TP 8
-.B \-projection-3d random
+.B \-\-projection-3d random
Project the Klein bottle from 3d to 2d using a random projection mode
(default).
.TP 8
-.B \-projection-3d perspective \fP(Shortcut: \fB\-perspective-3d\fP)
+.B \-\-projection-3d perspective \fP(Shortcut: \fB\-\-perspective-3d\fP)
Project the Klein bottle from 3d to 2d using a perspective projection.
.TP 8
-.B \-projection-3d orthographic \fP(Shortcut: \fB\-orthographic-3d\fP)
+.B \-\-projection-3d orthographic \fP(Shortcut: \fB\-\-orthographic-3d\fP)
Project the Klein bottle from 3d to 2d using an orthographic
projection.
.PP
The following three options are mutually exclusive. They determine
how the Klein bottle is projected from 4d to 3d.
.TP 8
-.B \-projection-4d random
+.B \-\-projection-4d random
Project the Klein bottle from 4d to 3d using a random projection mode
(default).
.TP 8
-.B \-projection-4d perspective \fP(Shortcut: \fB\-perspective-4d\fP)
+.B \-\-projection-4d perspective \fP(Shortcut: \fB\-\-perspective-4d\fP)
Project the Klein bottle from 4d to 3d using a perspective projection.
.TP 8
-.B \-projection-4d orthographic \fP(Shortcut: \fB\-orthographic-4d\fP)
+.B \-\-projection-4d orthographic \fP(Shortcut: \fB\-\-orthographic-4d\fP)
Project the Klein bottle from 4d to 3d using an orthographic
projection.
.PP
visualization. Therefore, in walk-and-turn mode the speeds you have
selected are divided by 5 internally.
.TP 8
-.B \-speed-wx \fIfloat\fP
+.B \-\-speed-wx \fIfloat\fP
Rotation speed around the wx plane (default: 1.1).
.TP 8
-.B \-speed-wy \fIfloat\fP
+.B \-\-speed-wy \fIfloat\fP
Rotation speed around the wy plane (default: 1.3).
.TP 8
-.B \-speed-wz \fIfloat\fP
+.B \-\-speed-wz \fIfloat\fP
Rotation speed around the wz plane (default: 1.5).
.TP 8
-.B \-speed-xy \fIfloat\fP
+.B \-\-speed-xy \fIfloat\fP
Rotation speed around the xy plane (default: 1.7).
.TP 8
-.B \-speed-xz \fIfloat\fP
+.B \-\-speed-xz \fIfloat\fP
Rotation speed around the xz plane (default: 1.9).
.TP 8
-.B \-speed-yz \fIfloat\fP
+.B \-\-speed-yz \fIfloat\fP
Rotation speed around the yz plane (default: 2.1).
.PP
The following two options determine the walking speed and direction.
.TP 8
-.B \-walk-direction \fIfloat\fP
+.B \-\-walk-direction \fIfloat\fP
The walking direction is measured as an angle in degrees in the 2d
square that forms the coordinate system of the surface of the Klein
bottle (default: 7.0).
.TP 8
-.B \-walk-speed \fIfloat\fP
+.B \-\-walk-speed \fIfloat\fP
The walking speed is measured in percent of some sensible maximum
speed (default: 20.0).
.SH INTERACTION
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
lament \- animates the Lament Configuration
.SH SYNOPSIS
.B lament
-[\-display \fIhost:display.screen\fP] [\-window] [\-root] [\-install]
-[\-visual \fIvisual\fP] [\-delay \fImicroseconds\fP] [\-fps]
-[\-texture] [\-no\-texture] [\-wireframe]
+[\-\-display \fIhost:display.screen\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-install]
+[\-\-visual \fIvisual\fP] [\-\-delay \fImicroseconds\fP] [\-\-fps]
+[\-\-texture] [\-\-no\-texture] [\-\-wireframe]
.SH DESCRIPTION
The \fIlament\fP program draws an animation of a particular puzzle box
repeatedly solving itself.
.I lament
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-install
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP\fP
+.B \-\-visual \fIvisual\fP\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-texture
+.B \-\-texture
Use texture maps. This is the default.
.TP 8
-.B \-no\-texture
+.B \-\-no\-texture
Do not use texture maps. This is boring and wrong.
.TP 8
-.B \-wireframe
+.B \-\-wireframe
Only draw outlines.
.TP 8
-.B \-delay \fImicroseconds\fP
+.B \-\-delay \fImicroseconds\fP
How long to pause between frames. Default is 20000, or 0.02 second.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH BUGS
This hack is glacially slow on machines lacking hardware texture support.
lavalite \- 3D OpenGL simulation of a Lavalite.
.SH SYNOPSIS
.B lavalite
-[\-display \fIhost:display.screen\fP] [\-window] [\-root]
-[\-visual \fIvisual\fP] [\-delay \fImicroseconds\fP] [\-fps]
-[\-style \fIstyle\fP ]
-[\-spin \fIxyz\fP ] [\-no-spin ]
-[\-speed \fIfloat\fP ]
-[\-resolution \fIinteger\fP ]
-[\-count \fIinteger\fP ]
-[\-no-smooth ]
-[\-wireframe ]
-[\-impatient ]
-[\-lava-color \fIcolor\fP ]
-[\-fluid-color \fIcolor\fP ]
-[\-base-color \fIcolor\fP ]
-[\-table-color \fIcolor\fP ]
-[\-fluid-texture \fIfilename\fP ]
-[\-base-texture \fIfilename\fP ]
-[\-table-texture \fIfilename\fP ]
+[\-\-display \fIhost:display.screen\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-visual \fIvisual\fP] [\-\-delay \fImicroseconds\fP] [\-\-fps]
+[\-\-style \fIstyle\fP ]
+[\-\-spin \fIxyz\fP ] [\-\-no-spin ]
+[\-\-speed \fIfloat\fP ]
+[\-\-resolution \fIinteger\fP ]
+[\-\-count \fIinteger\fP ]
+[\-\-no-smooth ]
+[\-\-wireframe ]
+[\-\-impatient ]
+[\-\-lava-color \fIcolor\fP ]
+[\-\-fluid-color \fIcolor\fP ]
+[\-\-base-color \fIcolor\fP ]
+[\-\-table-color \fIcolor\fP ]
+[\-\-fluid-texture \fIfilename\fP ]
+[\-\-base-texture \fIfilename\fP ]
+[\-\-table-texture \fIfilename\fP ]
.SH DESCRIPTION
The \fIlavalite\fP program displays a 3D simulation of the famous lamp
of the same name. It requires a fast computer with fast OpenGL support.
.I lavalite
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-visual \fIvisual\fP\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-visual \fIvisual\fP\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-style \fIstyle\fP\fP
+.B \-\-style \fIstyle\fP\fP
Specify which model of lamp to draw. Available models
are: \fBClassic\fP, \fBGiant\fP, \fBCone\fP, and \fBRocket\fP.
Default: random.
.TP 8
-.B \-spin \fIxyz\fP
+.B \-\-spin \fIxyz\fP
Around which axes the model should auto-spin. Defaults to "Z", meaning
it rotates horizontally, but otherwise pitch or roll.
.TP 8
-.B \-no-spin
-Same as \fB\-spin ''\fP.
+.B \-\-no-spin
+Same as \fB\-\-spin ''\fP.
.TP 8
-.B \-speed \fIfloat\fP
+.B \-\-speed \fIfloat\fP
A number controlling the frequency at which new blobs launch: you can
think of this as being related to the the heat of the lightbulb in
the base. Default: 0.003.
.TP 8
-.B \-delay \fIusecs\fP
+.B \-\-delay \fIusecs\fP
The delay between steps of the animation; default is 30000 (0.03 second.)
.TP 8
-.B \-resolution \fIinteger\fP
+.B \-\-resolution \fIinteger\fP
The size of the grid from which the mesh is created that is used
to polygonize the blobs. higher values will give very smooth looking
blobs, at the expense of speed. Default: 40.
The options "-resolution 10 -no-smooth" look kind of interesting.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.TP 8
-.B \-count \fIinteger\fP
+.B \-\-count \fIinteger\fP
The maximum number of blobs that can be in motion at once.
Default: 3.
.TP 8
-.B \-no-smooth
+.B \-\-no-smooth
Turn off smoothing: the objects in the scene will be facetted.
.TP 8
-.B \-wireframe
+.B \-\-wireframe
Render all objects in wireframe instead of as solids.
.TP 8
-.B \-impatient
+.B \-\-impatient
Provide this option if you are. This will pre-warm the lamp, so when it
starts up, the first frame will show a blob already halfway up the lamp.
.TP 8
-.B \-lava-color \fIcolor\fP
+.B \-\-lava-color \fIcolor\fP
Specifies the color of the blobbies. Default: red.
.TP 8
-.B \-fluid-color \fIcolor\fP
+.B \-\-fluid-color \fIcolor\fP
Specifies the color of the fluid that the blobbies float in.
Default: light blue.
.TP 8
-.B \-base-color \fIcolor\fP
+.B \-\-base-color \fIcolor\fP
Specifies the color of the lamp base, and the cap on top of the bottle.
Default: very dark gray.
.TP 8
-.B \-table-color \fIcolor\fP
+.B \-\-table-color \fIcolor\fP
Specifies the color of the table that the lamp is sitting on.
Default: black (meaning it is invisible.)
.TP 8
-.B \-fluid-texture \fIfilename\fP
+.B \-\-fluid-texture \fIfilename\fP
An image file to wrap around the glass.
Note that on most systems, GL textures must have dimensions that are a
as "white". Otherwise, the combination of the two might be too dark to
see.
.TP 8
-.B \-base-texture \fIfilename\fP
+.B \-\-base-texture \fIfilename\fP
An image file to wrap around the base of the lamp, and the cap on top
of the bottle.
.TP 8
-.B \-table-texture \fItexture\fP
+.B \-\-table-texture \fItexture\fP
An image file to spread across the table that the lamp is sitting on.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1),
lockward \- Rotating spinning color-cycling things
.SH SYNOPSIS
.B lockward
-[\-display \fIdisplayspec\fP]
-[\-root]
-[\-window]
-[\-visual \fIarg\fP]
-[\-window-id \fIarg\fP]
-[\-delay \fIusec\fP]
-[\-pair]
-[\-fps]
-[\-blink | \-no-blink]
-[\-rotateidle-min \fImsec\fP]
-[\-rotateidle-max \fImsec\fP]
-[\-blinkidle-min \fImsec\fP]
-[\-blinkidle-max \fImsec\fP]
-[\-blinkdwell-min \fImsec\fP]
-[\-blinkdwell-max \fImsec\fP]
+[\-\-display \fIdisplayspec\fP]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-window]
+[\-\-visual \fIarg\fP]
+[\-\-window-id \fIarg\fP]
+[\-\-delay \fIusec\fP]
+[\-\-pair]
+[\-\-fps]
+[\-\-blink | \-\-no-blink]
+[\-\-rotateidle-min \fImsec\fP]
+[\-\-rotateidle-max \fImsec\fP]
+[\-\-blinkidle-min \fImsec\fP]
+[\-\-blinkidle-max \fImsec\fP]
+[\-\-blinkdwell-min \fImsec\fP]
+[\-\-blinkdwell-max \fImsec\fP]
.SH DESCRIPTION
.B lockward
draws a spinning, rotating set of notched wheels overlaid with some flashing
polarized light.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the ID number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window (default).
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fImicroseconds\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fImicroseconds\fP
Per-frame delay, in microseconds. Default: 20000 (50 frames/sec).
.TP 8
-.B \-blink | \-no-blink
+.B \-\-blink | \-\-no-blink
Enables/disables the blinking effects. Default: Enabled.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.TP 8
-.B \-rotateidle-min \fImilliseconds
+.B \-\-rotateidle-min \fImilliseconds
.TP 8
-.B \-rotateidle-max \fImilliseconds
+.B \-\-rotateidle-max \fImilliseconds
The minimum and maximum time each spinner will sit idle, in milliseconds.
Defaults: Min 1000, max 6000.
.TP 8
-.B \-blinkidle-min \fImilliseconds
+.B \-\-blinkidle-min \fImilliseconds
.TP 8
-.B \-blinkidle-max \fImilliseconds
+.B \-\-blinkidle-max \fImilliseconds
The minimum and maximum time between blinking effects, in milliseconds.
Defaults: Min 1000, max 9000.
.TP 8
-.B \-blinkdwell-min \fImilliseconds
+.B \-\-blinkdwell-min \fImilliseconds
.TP 8
-.B \-blinkdwell-max \fImilliseconds
+.B \-\-blinkdwell-max \fImilliseconds
The minimum and maximum dwell time for the blinking effects, in
milliseconds. This affects how quickly the blinks actually happen.
Defaults: Min 100, max 600.
.B XENVIRONMENT
Name of a resource file that overrides the global resources stored in the
RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
mapscroller \- a slowly-scrolling map of a random place on Earth.
.SH SYNOPSIS
.B mapscroller
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-speed \fInumber\fP]
-[\-duration \fIseconds\fP]
-[\-map\-level \fInumber\fP]
-[\-url-template URL]
-[\-origin LAT/LON]
-[\-no-titles]
-[\-no-arrow]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-speed \fInumber\fP]
+[\-\-duration \fIseconds\fP]
+[\-\-map\-level \fInumber\fP]
+[\-\-url-template URL]
+[\-\-origin LAT/LON]
+[\-\-no-titles]
+[\-\-no-arrow]
+[\-\-fps]
.SH DESCRIPTION
A slowly-scrolling map of a random place on Earth. The map images are loaded
from openstreetmap.org, or any compatible service.
"jaywalking" was invented for profit by auto industry lobbyists in the 1920s.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 30000 (0.03 seconds).
.TP 8
-.B \-speed \fInumber\fP
+.B \-\-speed \fInumber\fP
Scrolling speed. 2.0 means twice as fast, 0.5 means half as fast.
.TP 8
-.B \-duration \fIseconds\fP
+.B \-\-duration \fIseconds\fP
When in one of the random modes, re-select the map position every
N seconds. Default 20 minutes.
.TP 8
-.B \-map\-level \fInumber\fP
+.B \-\-map\-level \fInumber\fP
Larger numbers are zoomed in more. 5 - 18, default 15.
.TP 8
-.B \-url-template \fIURL\fP
+.B \-\-url-template \fIURL\fP
The map tile server to use. Default: Open Street Map. You can find
others here:
\fIhttps://wiki.openstreetmap.org/wiki/Tiles#Servers\fP
.TP 8
-.B \-origin \fIlocation\fP
+.B \-\-origin \fIlocation\fP
"Random" means a fully random location somewhere on Earth, excluding
the oceans.
Otherwise, this must be a latitude/longitude pair, as floats.
.TP 8
-.B \-titles | \-no-titles
+.B \-\-titles | \-\-no-titles
Whether to show the current coordinates in the upper left. Default true.
.TP 8
-.B \-arrow | \-no-arrow
+.B \-\-arrow | \-\-no-arrow
Whether to show a directional arrow in the middle of the screen. Default true.
.TP 8
-.B \-fps | \-no-fps
+.B \-\-fps | \-\-no-fps
Whether to show a frames-per-second display at the bottom of the screen.
.SH FILES
The map tile images are loaded from the network and cached on disk. Up to 20MB
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.TP 4
.B HTTP_PROXY, HTTPS_PROXY, http_proxy, or https_proxy
to get the default proxy host and port.
maze3d \- A 3D maze.
.SH SYNOPSIS
.B maze3d
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-speed \fIfloat\fP]
-[\-delay \fInumber\fP]
-[\-fps]
-[\-rows \fInumber\fP]
-[\-columns \fInumber\fP]
-[\-overlay]
-[\-wall-texture \fItexture\fP]
-[\-floor-texture \fItexture\fP]
-[\-ceiling-texture \fItexture\fP]
-[\-drop-acid]
-[\-drop-acid-walls]
-[\-drop-acid-floor]
-[\-drop-acid-ceiling]
-[\-inverters \fInumber\fP]
-[\-rats \fInumber\fP]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-speed \fIfloat\fP]
+[\-\-delay \fInumber\fP]
+[\-\-fps]
+[\-\-rows \fInumber\fP]
+[\-\-columns \fInumber\fP]
+[\-\-overlay]
+[\-\-wall-texture \fItexture\fP]
+[\-\-floor-texture \fItexture\fP]
+[\-\-ceiling-texture \fItexture\fP]
+[\-\-drop-acid]
+[\-\-drop-acid-walls]
+[\-\-drop-acid-floor]
+[\-\-drop-acid-ceiling]
+[\-\-inverters \fInumber\fP]
+[\-\-rats \fInumber\fP]
.SH DESCRIPTION
A recreation of the 3D Maze screensaver from Windows 95.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-speed \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-speed \fInumber\fP
Speed of the dungeon crawl. 2 is twice as fast, 0.5 is half as fast.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 20000 (0.02 seconds).
.TP 8
-.B \-fps | \-no-fps
+.B \-\-fps | \-\-no-fps
Display the current frame rate and CPU load.
.TP 8
-.B \-rows \fInumber\fP
+.B \-\-rows \fInumber\fP
The number of rows in the maze. Default: 12.
.TP 8
-.B \-columns \fInumber\fP
+.B \-\-columns \fInumber\fP
The number of columns in the maze. Default: 12.
.TP 8
-.B \-overlay
+.B \-\-overlay
Overlays a minimap of the maze on the screen.
.TP 8
-.B \-wall-texture \fItexture\fP
+.B \-\-wall-texture \fItexture\fP
Sets the wall texture. \fItexture\fP can be a path to an image file, or it can be one of the built-in textures (see TEXTURES below).
.TP 8
-.B \-floor-texture \fItexture\fP
+.B \-\-floor-texture \fItexture\fP
Sets the floor texture. \fItexture\fP can be a path to an image file, or it can be one of the built-in textures (see TEXTURES below).
.TP 8
-.B \-ceiling-texture \fItexture\fP
+.B \-\-ceiling-texture \fItexture\fP
Sets the ceiling texture. \fItexture\fP can be a path to an image file, or it can be one of the built-in textures (see TEXTURES below).
.TP 8
-.B \-drop-acid-walls
+.B \-\-drop-acid-walls
Continuously shifts the hue of the wall texture. (This looks like an LSD trip, hence the name.)
.TP 8
-.B \-drop-acid-floor
+.B \-\-drop-acid-floor
Continuously shifts the hue of the floor texture.
.TP 8
-.B \-drop-acid-ceiling
+.B \-\-drop-acid-ceiling
Continuously shifts the hue of the ceiling texture.
.TP 8
-.B \-drop-acid
+.B \-\-drop-acid
Turns on all three.
.TP 8
-.B \-inverters \fInumber\fP
+.B \-\-inverters \fInumber\fP
Sets the number of inverters (the spinny grey things that flip the camera upside-down) in the maze. Default: 10.
.TP 8
-.B \-rats \fInumber\fP
+.B \-\-rats \fInumber\fP
Sets the number of rats, or rather "Bobs", in the maze. Default: 1.
.TP 8
.SH TEXTURES
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
menger \- 3D menger gasket fractal.
.SH SYNOPSIS
.B menger
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-speed \fInumber\fP]
-[\-depth \fInumber\fP]
-[\-no-wander]
-[\-no-spin]
-[\-spin \fI[XYZ]\fP]
-[\-wireframe]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-speed \fInumber\fP]
+[\-\-depth \fInumber\fP]
+[\-\-no-wander]
+[\-\-no-spin]
+[\-\-spin \fI[XYZ]\fP]
+[\-\-wireframe]
+[\-\-fps]
.SH DESCRIPTION
This draws the three-dimensional variant of the recursive Menger Gasket, a
cube-based fractal object analogous to the Sierpinski Tetrahedron.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 30000 (0.03 seconds.).
.TP 8
-.B \-speed \fInumber\fP
+.B \-\-speed \fInumber\fP
Number of frames before changing shape. Default: 150.
.TP 8
-.B \-depth \fInumber\fP
+.B \-\-depth \fInumber\fP
Max depth to descend. Default: 3. You probably don't have enough
memory for 6.
.TP 8
-.B \-wander | \-no-wander
+.B \-\-wander | \-\-no-wander
Whether the object should wander around the screen.
.TP 8
-.B \-spin [XYZ]
+.B \-\-spin [XYZ]
Around which axes should the object spin?
.TP 8
-.B \-no-spin
+.B \-\-no-spin
None.
.TP 8
-.B \-wireframe
+.B \-\-wireframe
Render in wireframe instead of solid.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
mirrorblob \- Draws a wobbly blob that distorts the image behind it.
.SH SYNOPSIS
.B mirrorblob
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-wire]
-[\-delay \fInumber\fP]
-[\-fog]
-[\-walls]
-[\-colour]
-[\-texture]
-[\-offset-texture]
-[\-blend]
-[\-antialias]
-[\-resolution \fInumber\fP]
-[\-bumps \fInumber\fP]
-[\-fade-time \fInumber\fP]
-[\-hold-time \fInumber\fP]
-[\-zoom \fInumber\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-wire]
+[\-\-delay \fInumber\fP]
+[\-\-fog]
+[\-\-walls]
+[\-\-colour]
+[\-\-texture]
+[\-\-offset-texture]
+[\-\-blend]
+[\-\-antialias]
+[\-\-resolution \fInumber\fP]
+[\-\-bumps \fInumber\fP]
+[\-\-fade-time \fInumber\fP]
+[\-\-hold-time \fInumber\fP]
+[\-\-zoom \fInumber\fP]
+[\-\-fps]
.SH DESCRIPTION
Draws a wobbling blob, making use of alpha blending, fog,
textures, and lighting, plus a ``frames per second'' meter so that you can
tell how fast your graphics card is... Requires OpenGL.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
-.B \-wire
+.TP 8
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.B \-\-wire
Render in wireframe instead of solid.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 10000 (0.01 seconds.).
.TP 8
-.B \-fog | \-no-fog
+.B \-\-fog | \-\-no-fog
Whether to enable fog.
.TP 8
-.B \-walls | \-no-walls
+.B \-\-walls | \-\-no-walls
Add walls for blob to hit.
.TP 8
-.B \-colour | \-no-colour
+.B \-\-colour | \-\-no-colour
Draw coloured blob. If also textured, the texture will have color mixed in.
.TP 8
-.B \-texture | \-no-texture
+.B \-\-texture | \-\-no-texture
Whether to wrap a texture image on the blob.
.TP 8
-.B \-offset_texture | \-no-offset_texture
+.B \-\-offset_texture | \-\-no-offset_texture
Whether to ofset the texture calculations to only use a region of the image
under the blob. This works well with a semi-transparent blob.
.TP 8
-.B \-blend | \-no-blend
+.B \-\-blend | \-\-no-blend
Whether to draw a transparent blob. (see also offset_texture above)
.TP 8
-.B \-antialias | \-no-antialias
+.B \-\-antialias | \-\-no-antialias
Whether to antialias lines.
.TP 8
-.B \-resolution \fInumber\fP
+.B \-\-resolution \fInumber\fP
Resolution of the tessellation used to calculate and draw the blob. Larger
numbers give a smoother blob but increase calculation times exponentially.
.TP 8
-.B \-bumps \fInumber\fP
+.B \-\-bumps \fInumber\fP
Number of bumps used to distort the blob.
.TP 8
-.B \-hold-time \fInumber\fP
+.B \-\-hold-time \fInumber\fP
Time until loading a new image.
.TP 8
-.B \-fade-time \fInumber\fP
+.B \-\-fade-time \fInumber\fP
Time taken to transition between images.
.TP 8
-.B \-zoom \fInumber\fP
+.B \-\-zoom \fInumber\fP
Size multiplier for blob.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
moebius \- Escher's Moebuis Strip II, with ants.
.SH SYNOPSIS
.B moebius
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
[-delay \fInumber\fP]
[-solidmoebius]
[-wireframe]
II,'' a GL image of ants walking along the surface of a moebius strip.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 20000 (0.02 seconds.).
.TP 8
-.B \-solidmoebius
+.B \-\-solidmoebius
Solid Floor.
.TP 8
-.B \-wireframe
+.B \-\-wireframe
Render in wireframe instead of solid.
.TP 8
-.B \-noants | \-no-noants
+.B \-\-noants | \-\-no-noants
Draw Ants. Boolean.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
moebiusgears \- draw a moebius strip of interlocking gears.
.SH SYNOPSIS
.B moebiusgears
-[\-display \fIhost:display.screen\fP] [\-window] [\-root] [\-install]
-[\-visual \fIvisual\fP]
-[\-delay \fIusecs\fP]
-[\-speed \fIfloat\fP]
-[\-no\-spin]
-[\-no\-wander]
-[\-no\-roll]
+[\-\-display \fIhost:display.screen\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-install]
+[\-\-visual \fIvisual\fP]
+[\-\-delay \fIusecs\fP]
+[\-\-speed \fIfloat\fP]
+[\-\-no\-spin]
+[\-\-no\-wander]
+[\-\-no\-roll]
[-count \fIinteger\fP]
[-teeth \fIinteger\fP]
[-wireframe]
.I moebiusgears
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-install
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-delay \fIusecs\fP
+.B \-\-delay \fIusecs\fP
The delay between frames of the animation, in microseconds.
Default: 30000 (0.03 seconds.)
.TP 8
-.B \-speed \fIfloat\fP
+.B \-\-speed \fIfloat\fP
Larger numbers mean run faster. Default: 1.0.
.TP 8
-.B \-no\-spin
+.B \-\-no\-spin
Don't rotate the object.
.TP 8
-.B \-no\-wander
+.B \-\-no\-wander
Don't wander the object around the screen.
.TP 8
-.B \-no\-roll
+.B \-\-no\-roll
Don't slowly roll the moebius strip inside out.
.TP 8
-.B \-count \fIinteger\fP
+.B \-\-count \fIinteger\fP
How many gears to draw. Default: 17. Minimum 11, must be odd.
.TP 8
-.B \-teeth \fIinteger\fP
+.B \-\-teeth \fIinteger\fP
How many teeth to draw on each draw. Default: 15. Minimum 7, must be odd.
.TP 8
-.B \-wireframe
+.B \-\-wireframe
Render in wireframe instead of solid.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
-/* molecule, Copyright (c) 2001-2016 Jamie Zawinski <jwz@jwz.org>
+/* molecule, Copyright (c) 2001-2016 Jamie Zawinskin <jwz@jwz.org>
* Draws molecules, based on coordinates from PDB (Protein Data Base) files.
*
* Permission to use, copy, modify, distribute, and sell this software and its
s = 1.0 / h; /* Scale to unit */
s *= mc->overall_scale; /* Scale to size of atom */
- s *= 0.8; /* Shrink a bit */
+ s *= 0.5; /* Shrink a bit */
glScalef (s, s, 1);
glTranslatef (-w/2, -h/2, 0);
#ifndef HAVE_ANDROID /* Doesn't work -- causes whole scene to be black */
molecule \- draws 3D molecular structures
.SH SYNOPSIS
.B molecule
-[\-display \fIhost:display.screen\fP] [\-window] [\-root]
-[\-visual \fIvisual\fP] [\-delay \fImicroseconds\fP]
-[\-wander] [\-no-wander]
-[\-spin \fIaxes\fP]
-[\-no-spin]
-[\-timeout \fIseconds\fP]
-[\-labels] [\-no-labels]
-[\-titles] [\-no-titles]
-[\-atoms] [\-no-atoms]
-[\-bonds] [\-no-bonds]
-[\-shells] [\-no-shells]
-[\-molecule \fIfile-or-directory\fP]
-[\-verbose]
-[\-wireframe]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-visual \fIvisual\fP] [\-\-delay \fImicroseconds\fP]
+[\-\-wander] [\-\-no-wander]
+[\-\-spin \fIaxes\fP]
+[\-\-no-spin]
+[\-\-timeout \fIseconds\fP]
+[\-\-labels] [\-\-no-labels]
+[\-\-titles] [\-\-no-titles]
+[\-\-atoms] [\-\-no-atoms]
+[\-\-bonds] [\-\-no-bonds]
+[\-\-shells] [\-\-no-shells]
+[\-\-molecule \fIfile-or-directory\fP]
+[\-\-verbose]
+[\-\-wireframe]
+[\-\-fps]
.SH DESCRIPTION
The \fImolecule\fP program draws several different representations of
molecules. Some common molecules are built in, and it can read PDB
.I molecule
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-install
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP\fP
+.B \-\-visual \fIvisual\fP\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.TP 8
-.B \-verbose
+.B \-\-verbose
Print debugging info on stderr about files being loaded, etc.
.TP 8
-.B \-wander
+.B \-\-wander
Move the molecules around the screen.
.TP 8
-.B \-no\-wander
+.B \-\-no\-wander
Keep the molecule centered on the screen. This is the default.
.TP 8
-.B \-spin
+.B \-\-spin
Which axes around which the molecule should spin. The default is "XYZ",
-meaning rotate it freely in space. "\fB\-spin Z\fP" would rotate the
+meaning rotate it freely in space. "\fB\-\-spin Z\fP" would rotate the
molecule in the plane of the screen while not rotating it into or out
of the screen; etc.
.TP 8
-.B \-no\-spin
-Don't spin it at all: the same as \fB\-spin ""\fP.
+.B \-\-no\-spin
+Don't spin it at all: the same as \fB\-\-spin ""\fP.
.TP 8
-.B \-labels
+.B \-\-labels
Draw labels on the atoms (or the spot where the atoms would be.)
This is the default.
.TP 8
-.B \-no\-labels
+.B \-\-no\-labels
Do not draw labels on the atoms.
.TP 8
-.B \-titles
+.B \-\-titles
Print the name of the molecule and its chemical formula at the top of
the screen.
.TP 8
-.B \-no\-titles
+.B \-\-no\-titles
Do not print the molecule name.
.TP 8
-.B \-atoms
+.B \-\-atoms
Represent the atoms as shaded spheres of appropriate sizes.
This is the default.
.TP 8
-.B \-no\-atoms
+.B \-\-no\-atoms
Do not draw spheres for the atoms: only draw bond lines.
.TP 8
-.B \-bonds
+.B \-\-bonds
Represent the atomic bonds as solid tubes of appropriate thicknesses.
This is the default.
.TP 8
-.B \-no\-bonds
+.B \-\-no\-bonds
Do not draw the bonds: instead, make the spheres for the atoms be
larger, for a "space-filling" representation of the molecule.
.TP 8
-.B \-shells
+.B \-\-shells
Draw transparent electron shells around the atoms. This only works
if bonds are also being drawn.
.TP 8
-.B \-no\-shells
+.B \-\-no\-shells
Do not draw electron shells. This is the default.
.TP 8
-.B \-shell\-alpha
+.B \-\-shell\-alpha
When drawing shells, how transparent to make them. Default 0.4.
.TP 8
-.B \-wireframe
+.B \-\-wireframe
Draw a wireframe rendition of the molecule: this will consist only of
single-pixel lines for the bonds, and text labels where the atoms go.
This will be very fast.
.TP 8
-.B \-timeout \fIseconds\fP
+.B \-\-timeout \fIseconds\fP
When using the built-in data set, change to a new molecule every
this-many seconds. Default is 20 seconds.
.TP 8
-.B \-molecule \fIfile-or-directory\fP
+.B \-\-molecule \fIfile-or-directory\fP
Instead of using the built-in molecules, read one from the given file.
This file must be in PDB (Protein Data Base) format. (Note that it's
not uncommon for PDB files to contain only the atoms, with no (or
This can also be a directory, in which case, all of the .pdb files in
that directory will be loaded. A new one will be displayed at random
-every few seconds (as per the \fI\-timeout\fP option.)
+every few seconds (as per the \fI\-\-timeout\fP option.)
.PP
When the molecule is too large (bigger than about 30 angstroms from
-side to side), the \fI\-label\fP option will be automatically turned
+side to side), the \fI\-\-label\fP option will be automatically turned
off, because otherwise, the labels would overlap and completely obscure
the display.
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
morph3d \- 3d morphing objects.
.SH SYNOPSIS
.B morph3d
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-count \fInumber\fP]
-[\-delay \fInumber\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-count \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-fps]
.SH DESCRIPTION
Another 3d shape-changing GL hack. It has the same shiny-plastic feel
as Superquadrics, as many computer-generated objects do...
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-count \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-count \fInumber\fP
0 - 20. Default: 0.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 40000 (0.04 seconds.).
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
nakagin \- Nakagin Capsule Tower screen saver.
.SH SYNOPSIS
.B nakagin
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-speed \fInumber\fP]
-[\-no-spin]
-[\-wander]
-[\-no-tilt]
-[\-wireframe]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-speed \fInumber\fP]
+[\-\-no-spin]
+[\-\-wander]
+[\-\-no-tilt]
+[\-\-wireframe]
+[\-\-fps]
.SH DESCRIPTION
The Nakagin Capsule Tower was demolished in 2022, but this version will
continue to grow forever.
capsules were shipped to the site.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 30000 (0.03 seconds).
.TP 8
-.B \-speed \fInumber\fP
+.B \-\-speed \fInumber\fP
Animation speed. 2.0 means twice as fast, 0.5 means half as fast.
.TP 8
-.B \-spin | \-no-spin
+.B \-\-spin | \-\-no-spin
Whether the building should slowly rotate.
.TP 8
-.B \-wander | \-no-wander
+.B \-\-wander | \-\-no-wander
Whether the building should wander around the screen.
.TP 8
-.B \-tilt | \-no-tilt
+.B \-\-tilt | \-\-no-tilt
Whether the observer should look up and down.
.TP 8
-.B \-wireframe | \-no-wireframe
+.B \-\-wireframe | \-\-no-wireframe
Render in wireframe instead of solid.
.TP 8
-.B \-fps | \-no-fps
+.B \-\-fps | \-\-no-fps
Whether to show a frames-per-second display at the bottom of the screen.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
https://en.wikipedia.org/wiki/Nakagin_Capsule_Tower,
.br
noof \- draw rotatey patterns
.SH SYNOPSIS
.B dangerball
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-fps]
.SH DESCRIPTION
Draws some rotatey patterns, using OpenGL.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 10000 (0.01 seconds.).
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
peepers \- floating eyeballs.
.SH SYNOPSIS
.B peepers
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-speed \fInumber\fP]
-[\-count \fInumber\fP]
-[\-mode bounce | scroll | random]
-[\-wireframe]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-speed \fInumber\fP]
+[\-\-count \fInumber\fP]
+[\-\-mode bounce | scroll | random]
+[\-\-wireframe]
+[\-\-fps]
.SH DESCRIPTION
Eyeballs. They float. They bounce. They stare at your cursor.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 30000 (0.03 seconds).
.TP 8
-.B \-speed \fInumber\fP
+.B \-\-speed \fInumber\fP
Animation speed. 2.0 means twice as fast, 0.5 means half as fast.
.TP 8
-.B \-count \fInumber\fP
+.B \-\-count \fInumber\fP
Number of eyes. 0 means random.
.TP 8
-.B \-mode bounce
+.B \-\-mode bounce
The eyeballs bounce onto the screen from the bottom. Like a cow.
.TP 8
-.B \-mode scroll
+.B \-\-mode scroll
The eyeballs scroll in from the left and right.
.TP 8
-.B \-mode xeyes
+.B \-\-mode xeyes
The eyeballs remain stationary, but always turn to stare at the mouse
pointer, wherever it happens to be on the screen. Perhaps best used
-in conjunction with \fI\-count 2\fP.
+in conjunction with \fI\-\-count 2\fP.
.TP 8
-.B \-mode beholder
-Render a ball made of eyeballs, all looking at you. Valid \fI\-count\fP
+.B \-\-mode beholder
+Render a ball made of eyeballs, all looking at you. Valid \fI\-\-count\fP
values are 20, 80, 320 or 1280.
.TP 8
-.B \-wireframe | \-no-wireframe
+.B \-\-wireframe | \-\-no-wireframe
Render in wireframe instead of solid.
.TP 8
-.B \-fps | \-no-fps
+.B \-\-fps | \-\-no-fps
Whether to show a frames-per-second display at the bottom of the screen.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
photopile \- displays multiple images in a periodically shuffled pile
.SH SYNOPSIS
.B photopile
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-count \fIint\fP]
-[\-scale \fIfactor\fP]
-[\-maxTilt \fIdegrees\fP]
-[\-titles | \-no\-titles]
-[\-polaroid | \-no\-polaroid]
-[\-shadows | \-no\-shadows]
-[\-font \fIfont\fP]
-[\-speed \fIratio\fP]
-[\-duration \fIseconds\fP]
-[\-fps]
-[\-debug]
-[\-wireframe]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-count \fIint\fP]
+[\-\-scale \fIfactor\fP]
+[\-\-maxTilt \fIdegrees\fP]
+[\-\-titles | \-\-no\-titles]
+[\-\-polaroid | \-\-no\-polaroid]
+[\-\-shadows | \-\-no\-shadows]
+[\-\-font \fIfont\fP]
+[\-\-speed \fIratio\fP]
+[\-\-duration \fIseconds\fP]
+[\-\-fps]
+[\-\-debug]
+[\-\-wireframe]
.SH DESCRIPTION
Loads several random images, and displays them as if lying in a random pile.
The pile is periodically reshuffled, with new images coming in and old ones
and click on the "Advanced" tab.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-count \fIint\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-count \fIint\fP
How many images to display. Default 7.
.TP 8
-.B \-scale \fIfactor\fP
+.B \-\-scale \fIfactor\fP
Size of images in relation to the size of the window. Default 0.4.
.TP 8
-.B \-maxTilt \fIdegrees\fP
+.B \-\-maxTilt \fIdegrees\fP
Maximum deviation from vertical. Default 50 degrees.
.TP 8
-.B \-duration \fIseconds\fP
+.B \-\-duration \fIseconds\fP
Every \fIduration\fP seconds, one of the images will be replaced
with a new one. Default 5 seconds.
.TP 8
-.B \-speed \fIratio\fP
+.B \-\-speed \fIratio\fP
Speed up or slow down the animation. 0.5 means half as fast as the
default; 2.0 means twice as fast.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 10000 (0.01 seconds.).
.TP 8
-.B \-titles \fB| \-no\-titles\fP
+.B \-\-titles \fB| \-\-no\-titles\fP
Whether to display the file names of the images beneath them. Default: yes.
.TP 8
-.B \-polaroid \fB| \-no\-polaroid\fP
+.B \-\-polaroid \fB| \-\-no\-polaroid\fP
Whether to simulate images taken by an instant camera. Default: yes.
.TP 8
-.B \-shadows \fB| \-no\-shadows\fP
+.B \-\-shadows \fB| \-\-no\-shadows\fP
Whether to draw images with drop shadows. Default: no.
.TP 8
-.B \-font \fIfont-name\fP
+.B \-\-font \fIfont-name\fP
The font to use for the initial loading screen and for image titles.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.TP 8
-.B \-debug
+.B \-\-debug
Prints debugging info to stderr.
.TP 8
-.B \-wireframe
+.B \-\-wireframe
Another debug mode.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver\-settings (1)
pinion \- draws a scrolling sequence of interconnected gears
.SH SYNOPSIS
.B pinion
-[\-display \fIhost:display.screen\fP] [\-window] [\-root] [\-install]
-[\-visual \fIvisual\fP]
-[\-delay \fIusecs\fP]
-[\-scroll \fIratio\fP]
-[\-spin \fIratio\fP]
-[\-size \fIratio\fP]
-[\-max-rpm \fIint\fP]
-[\-wireframe]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-install]
+[\-\-visual \fIvisual\fP]
+[\-\-delay \fIusecs\fP]
+[\-\-scroll \fIratio\fP]
+[\-\-spin \fIratio\fP]
+[\-\-size \fIratio\fP]
+[\-\-max-rpm \fIint\fP]
+[\-\-wireframe]
+[\-\-fps]
.SH DESCRIPTION
The \fIpinion\fP program draws an interconnected set of gears moving
across the screen.
.I pinion
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-install
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP\fP
+.B \-\-visual \fIvisual\fP\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-delay \fIusecs\fP
+.B \-\-delay \fIusecs\fP
The delay between frames of the animation, in microseconds: default 15000.
.TP 8
-.B \-spin \fIratio\fP
+.B \-\-spin \fIratio\fP
How fast the gears should spin; default 1.0. 2.0 means twice as fast,
0.5 means half as fast.
.TP 8
-.B \-scroll \fIratio\fP
+.B \-\-scroll \fIratio\fP
How fast the gears should scroll past the screen; default 1.0.
2.0 means twice as fast, 0.5 means half as fast.
.TP 8
-.B \-size \fIratio\fP
+.B \-\-size \fIratio\fP
How big the gears should be, on average; default 1.0.
2.0 means twice as large, 0.5 means half as large.
.TP 8
-.B \-max\-rpm \fIinteger\fP
+.B \-\-max\-rpm \fIinteger\fP
If any gear exceeds the maximum RPM, the current gear train is broken there,
and we start a new train. Default: 900 RPM. (At 30 FPS, that's about half
a rotation per frame.)
.TP 8
-.B \-wireframe
+.B \-\-wireframe
Render in wireframe instead of solid.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR gears (MANSUFFIX),
.BR xscreensaver (1),
pipes \- fill the screen with a plumbing system.
.SH SYNOPSIS
.B pipes
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
[-count 0]
[-count 1]
[-cycles \fInumber\fP]
probably seen this GL hack. It fills the screen with a plumbing system.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-count 0
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-count 0
Curved Pipes.
.TP 8
-.B \-count 1
+.B \-\-count 1
Ball Joints.
.TP 8
-.B \-cycles \fInumber\fP
+.B \-\-cycles \fInumber\fP
Number of pipe systems to draw at once. Default: 5.
.TP 8
-.B \-size \fInumber\fP
+.B \-\-size \fInumber\fP
Length of each pipe system. Default: 500.
.TP 8
-.B \-factory \fInumber\fP
+.B \-\-factory \fInumber\fP
How much gadgetry to create; Useful range is 0-10. Default: 2.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-delay \fInumber\fP
How long (in microseconds) to sleep between frames. Default: 10000.
.TP 8
-.B \-fisheye | \-no-fisheye
+.B \-\-fisheye | \-\-no-fisheye
Whether to use a fisheye lens.
.TP 8
-.B \-tightturns | \-no-tightturns
+.B \-\-tightturns | \-\-no-tightturns
Whether to allow tight turns.
.TP 8
-.B \-db | \-no-db
+.B \-\-db | \-\-no-db
Whether to double-buffer.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
.SH SYNOPSIS
.SH SYNOPSIS
.B polyhedra
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-speed \fIfloat\fP]
-[\-duration \fIseconds\fP]
-[\-no-wander]
-[\-spin \fIXYZ\fP]
-[\-wireframe]
-[\-no-titles]
-[\-which \fIname\fP]
-[\-wireframe]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-speed \fIfloat\fP]
+[\-\-duration \fIseconds\fP]
+[\-\-no-wander]
+[\-\-spin \fIXYZ\fP]
+[\-\-wireframe]
+[\-\-no-titles]
+[\-\-which \fIname\fP]
+[\-\-wireframe]
+[\-\-fps]
.SH DESCRIPTION
This program renders 160 different 3D solids, and displays some
information about each. A new solid is chosen every few seconds.
and vertices with faces.)
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 30000 (0.03 seconds.).
.TP 8
-.B \-speed \fInumber\fP
+.B \-\-speed \fInumber\fP
Larger numbers mean run faster. Default: 1.0.
.TP 8
-.B \-duration \fIseconds\fP
+.B \-\-duration \fIseconds\fP
How long before switching to a new polyhedron. Default 12 seconds.
.TP 8
-.B \-wander | \-no-wander
+.B \-\-wander | \-\-no-wander
Whether the objects should wander around the screen.
.TP 8
-.B \-spin [XYZ] | \-no-spin
+.B \-\-spin [XYZ] | \-\-no-spin
Which axes, if any, to spin around on.
.TP 8
-.B \-titles | \-no-titles
+.B \-\-titles | \-\-no-titles
Whether to display text describing each object.
.TP 8
-.B \-which \fIobject-name\fP
+.B \-\-which \fIobject-name\fP
Display only one particular object, identified by number, name, or
Whthoff symbol.
.TP 8
-.B \-wireframe | \-no-wireframe
+.B \-\-wireframe | \-\-no-wireframe
Render in wireframe instead of solid.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.SH KEY BINDINGS
When running in a window, you can rotate the object with the mouse.
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
polytopes \- Draws one of the six regular 4d polytopes rotating in 4d.
.SH SYNOPSIS
.B polytopes
-[\-display \fIhost:display.screen\fP]
-[\-install]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fIusecs\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-install]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fIusecs\fP]
+[\-\-fps]
[\-5-cell]
[\-8-cell]
[\-16-cell]
[\-24-cell]
[\-120-cell]
[\-600-cell]
-[\-wireframe]
-[\-surface]
-[\-transparent]
-[\-single-color]
-[\-depth-colors]
-[\-perspective-3d]
-[\-orthographic-3d]
-[\-perspective-4d]
-[\-orthographic-4d]
-[\-speed-wx \fIfloat\fP]
-[\-speed-wy \fIfloat\fP]
-[\-speed-wz \fIfloat\fP]
-[\-speed-xy \fIfloat\fP]
-[\-speed-xz \fIfloat\fP]
-[\-speed-yz \fIfloat\fP]
+[\-\-wireframe]
+[\-\-surface]
+[\-\-transparent]
+[\-\-single-color]
+[\-\-depth-colors]
+[\-\-perspective-3d]
+[\-\-orthographic-3d]
+[\-\-perspective-4d]
+[\-\-orthographic-4d]
+[\-\-speed-wx \fIfloat\fP]
+[\-\-speed-wy \fIfloat\fP]
+[\-\-speed-wz \fIfloat\fP]
+[\-\-speed-xy \fIfloat\fP]
+[\-\-speed-xz \fIfloat\fP]
+[\-\-speed-yz \fIfloat\fP]
.SH DESCRIPTION
The \fIpolytopes\fP program shows one of the six regular 4d polytopes
(5-cell, 8-cell, 16-cell, 24-cell, 120-cell, or 600-cell) rotating in
.I polytopes
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-install
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual
class, or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-delay \fImicroseconds\fP
+.B \-\-delay \fImicroseconds\fP
How much of a delay should be introduced between steps of the
animation. Default 25000, or 1/40th second.
.PP
The following three options are mutually exclusive. They determine
how the polytope is displayed.
.TP 8
-.B \-wireframe
+.B \-\-wireframe
Display the polytope as a wireframe mesh.
.TP 8
-.B \-surface
+.B \-\-surface
Display the polytope as a solid object.
.TP 8
-.B \-transparent
+.B \-\-transparent
Display the polytope as a transparent object (default).
.PP
The following two options are mutually exclusive. They determine how
to color the polytope.
.TP 8
-.B \-single-color
+.B \-\-single-color
Display the polytope in red.
.TP 8
-.B \-depth-colors
+.B \-\-depth-colors
Display the polytope with a fully saturated color wheel in which the
edges or faces are colored according to their average 4d "depth", i.e.,
the w coordinate of the polytope in its unrotated position (default).
The following two options are mutually exclusive. They determine how
the polytope is projected from 3d to 2d (i.e., to the screen).
.TP 8
-.B \-perspective-3d
+.B \-\-perspective-3d
Project the polytope from 3d to 2d using a perspective projection
(default).
.TP 8
-.B \-orthographic-3d
+.B \-\-orthographic-3d
Project the polytope from 3d to 2d using an orthographic projection.
.PP
The following two options are mutually exclusive. They determine how
the polytope is projected from 4d to 3d.
.TP 8
-.B \-perspective-4d
+.B \-\-perspective-4d
Project the polytope from 4d to 3d using a perspective projection
(default).
.TP 8
-.B \-orthographic-4d
+.B \-\-orthographic-4d
Project the polytope from 4d to 3d using an orthographic projection.
.PP
The following six options determine the rotation speed of the polytope
in degrees per frame. The speeds should be set to relatively small
values, e.g., less than 4 in magnitude.
.TP 8
-.B \-speed-wx \fIfloat\fP
+.B \-\-speed-wx \fIfloat\fP
Rotation speed around the wx plane (default: 1.1).
.TP 8
-.B \-speed-wy \fIfloat\fP
+.B \-\-speed-wy \fIfloat\fP
Rotation speed around the wy plane (default: 1.3).
.TP 8
-.B \-speed-wz \fIfloat\fP
+.B \-\-speed-wz \fIfloat\fP
Rotation speed around the wz plane (default: 1.5).
.TP 8
-.B \-speed-xy \fIfloat\fP
+.B \-\-speed-xy \fIfloat\fP
Rotation speed around the xy plane (default: 1.7).
.TP 8
-.B \-speed-xz \fIfloat\fP
+.B \-\-speed-xz \fIfloat\fP
Rotation speed around the xz plane (default: 1.9).
.TP 8
-.B \-speed-yz \fIfloat\fP
+.B \-\-speed-yz \fIfloat\fP
Rotation speed around the yz plane (default: 2.1).
.SH INTERACTION
If you run this program in standalone mode you can rotate the polytope
and yz planes. To examine the polytope at your leisure, it is best to
set all speeds to 0. Otherwise, the polytope will rotate while the
left mouse button is not pressed.
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
projectiveplane \- Draws a 4d embedding of the real projective plane.
.SH SYNOPSIS
.B projectiveplane
-[\-display \fIhost:display.screen\fP]
-[\-install]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fIusecs\fP]
-[\-fps]
-[\-mode \fIdisplay-mode\fP]
-[\-wireframe]
-[\-surface]
-[\-transparent]
-[\-appearance \fIappearance\fP]
-[\-solid]
-[\-distance-bands]
-[\-direction-bands]
-[\-colors \fIcolor-scheme\fP]
-[\-onesided-colors]
-[\-twosided-colors]
-[\-distance-colors]
-[\-direction-colors]
-[\-change-colors]
-[\-depth-colors]
-[\-view-mode \fIview-mode\fP]
-[\-walk]
-[\-turn]
-[\-walk-turn]
-[\-orientation-marks]
-[\-projection-3d \fImode\fP]
-[\-perspective-3d]
-[\-orthographic-3d]
-[\-projection-4d \fImode\fP]
-[\-perspective-4d]
-[\-orthographic-4d]
-[\-speed-wx \fIfloat\fP]
-[\-speed-wy \fIfloat\fP]
-[\-speed-wz \fIfloat\fP]
-[\-speed-xy \fIfloat\fP]
-[\-speed-xz \fIfloat\fP]
-[\-speed-yz \fIfloat\fP]
-[\-walk-direction \fIfloat\fP]
-[\-walk-speed \fIfloat\fP]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-install]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fIusecs\fP]
+[\-\-fps]
+[\-\-mode \fIdisplay-mode\fP]
+[\-\-wireframe]
+[\-\-surface]
+[\-\-transparent]
+[\-\-appearance \fIappearance\fP]
+[\-\-solid]
+[\-\-distance-bands]
+[\-\-direction-bands]
+[\-\-colors \fIcolor-scheme\fP]
+[\-\-onesided-colors]
+[\-\-twosided-colors]
+[\-\-distance-colors]
+[\-\-direction-colors]
+[\-\-change-colors]
+[\-\-depth-colors]
+[\-\-view-mode \fIview-mode\fP]
+[\-\-walk]
+[\-\-turn]
+[\-\-walk-turn]
+[\-\-orientation-marks]
+[\-\-projection-3d \fImode\fP]
+[\-\-perspective-3d]
+[\-\-orthographic-3d]
+[\-\-projection-4d \fImode\fP]
+[\-\-perspective-4d]
+[\-\-orthographic-4d]
+[\-\-speed-wx \fIfloat\fP]
+[\-\-speed-wy \fIfloat\fP]
+[\-\-speed-wz \fIfloat\fP]
+[\-\-speed-xy \fIfloat\fP]
+[\-\-speed-xz \fIfloat\fP]
+[\-\-speed-yz \fIfloat\fP]
+[\-\-walk-direction \fIfloat\fP]
+[\-\-walk-speed \fIfloat\fP]
.SH DESCRIPTION
The \fIprojectiveplane\fP program shows a 4d embedding of the real
projective plane. You can walk on the projective plane, see it turn
.I projectiveplane
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-install
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual
class, or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-delay \fImicroseconds\fP
+.B \-\-delay \fImicroseconds\fP
How much of a delay should be introduced between steps of the
animation. Default 10000, or 1/100th second.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.PP
The following four options are mutually exclusive. They determine how
the projective plane is displayed.
.TP 8
-.B \-mode random
+.B \-\-mode random
Display the projective plane in a random display mode (default).
.TP 8
-.B \-mode wireframe \fP(Shortcut: \fB\-wireframe\fP)
+.B \-\-mode wireframe \fP(Shortcut: \fB\-\-wireframe\fP)
Display the projective plane as a wireframe mesh.
.TP 8
-.B \-mode surface \fP(Shortcut: \fB\-surface\fP)
+.B \-\-mode surface \fP(Shortcut: \fB\-\-surface\fP)
Display the projective plane as a solid surface.
.TP 8
-.B \-mode transparent \fP(Shortcut: \fB\-transparent\fP)
+.B \-\-mode transparent \fP(Shortcut: \fB\-\-transparent\fP)
Display the projective plane as a transparent surface.
.PP
The following three options are mutually exclusive. They determine
the appearance of the projective plane.
.TP 8
-.B \-appearance random
+.B \-\-appearance random
Display the projective plane with a random appearance (default).
.TP 8
-.B \-appearance solid \fP(Shortcut: \fB\-solid\fP)
+.B \-\-appearance solid \fP(Shortcut: \fB\-\-solid\fP)
Display the projective plane as a solid object.
.TP 8
-.B \-appearance distance-bands \fP(Shortcut: \fB\-distance-bands\fP)
+.B \-\-appearance distance-bands \fP(Shortcut: \fB\-\-distance-bands\fP)
Display the projective plane as see-through bands that lie at
increasing distances from the origin.
.PP
.TP 8
-.B \-appearance direction-bands \fP(Shortcut: \fB\-direction-bands\fP)
+.B \-\-appearance direction-bands \fP(Shortcut: \fB\-\-direction-bands\fP)
Display the projective plane as see-through bands that lie at
increasing angles with respect to the origin.
.PP
The following four options are mutually exclusive. They determine how
to color the projective plane.
.TP 8
-.B \-colors random
+.B \-\-colors random
Display the projective plane with a random color scheme (default).
.TP 8
-.B \-colors onesided \fP(Shortcut: \fB\-onesided-colors\fP)
+.B \-\-colors onesided \fP(Shortcut: \fB\-\-onesided-colors\fP)
Display the projective plane with a single color.
.TP 8
-.B \-colors twosided \fP(Shortcut: \fB\-twosided-colors\fP)
+.B \-\-colors twosided \fP(Shortcut: \fB\-\-twosided-colors\fP)
Display the projective plane with two colors: one color one "side" and
the complementary color on the "other side." For static colors, the
colors are red and green. Note that the line at infinity lies at the
points where the red and green "sides" of the projective plane meet,
i.e., where the orientation of the projective plane reverses.
.TP 8
-.B \-colors distance \fP(Shortcut: \fB\-distance-colors\fP)
+.B \-\-colors distance \fP(Shortcut: \fB\-\-distance-colors\fP)
Display the projective plane with fully saturated colors that depend
on the distance of the points on the projective plane to the origin.
For static colors, the origin is displayed in red, while the line at
displayed as distance bands, each band will be displayed with a
different color.
.TP 8
-.B \-colors direction \fP(Shortcut: \fB\-direction-colors\fP)
+.B \-\-colors direction \fP(Shortcut: \fB\-\-direction-colors\fP)
Display the projective plane with fully saturated colors that depend
on the angle of the points on the projective plane with respect to the
origin. Angles in opposite directions to the origin (e.g., 15 and 205
equivalent. If the projective plane is displayed as direction bands,
each band will be displayed with a different color.
.TP 8
-.B \-colors depth \fP(Shortcut: \fB\-depth\fP)
+.B \-\-colors depth \fP(Shortcut: \fB\-\-depth\fP)
Display the projective plane with colors chosen depending on the 4d
"depth" (i.e., the w coordinate) of the points on the projective plane
at its default orientation in 4d.
The following options determine whether the colors with which the
projective plane is displayed are static or are changing dynamically.
.TP 8
-.B \-change-colors
+.B \-\-change-colors
Change the colors with which the projective plane is displayed
dynamically.
.TP 8
-.B \-no-change-colors
+.B \-\-no-change-colors
Use static colors to display the projective plane (default).
.PP
The following four options are mutually exclusive. They determine how
to view the projective plane.
.TP 8
-.B \-view-mode random
+.B \-\-view-mode random
View the projective plane in a random view mode (default).
.TP 8
-.B \-view-mode turn \fP(Shortcut: \fB\-turn\fP)
+.B \-\-view-mode turn \fP(Shortcut: \fB\-\-turn\fP)
View the projective plane while it turns in 4d.
.TP 8
-.B \-view-mode walk \fP(Shortcut: \fB\-walk\fP)
+.B \-\-view-mode walk \fP(Shortcut: \fB\-\-walk\fP)
View the projective plane as if walking on its surface.
.TP 8
-.B \-view-mode walk-turn \fP(Shortcut: \fB\-walk-turn\fP)
+.B \-\-view-mode walk-turn \fP(Shortcut: \fB\-\-walk-turn\fP)
View the projective plane as if walking on its surface. Additionally,
the projective plane turns around the true 4d planes (the xy, xz, and
yz planes).
The following options determine whether orientation marks are shown on
the projective plane.
.TP 8
-.B \-orientation-marks
+.B \-\-orientation-marks
Display orientation marks on the projective plane.
.TP 8
-.B \-no-orientation-marks
+.B \-\-no-orientation-marks
Don't display orientation marks on the projective plane (default).
.PP
The following three options are mutually exclusive. They determine
how the projective plane is projected from 3d to 2d (i.e., to the
screen).
.TP 8
-.B \-projection-3d random
+.B \-\-projection-3d random
Project the projective plane from 3d to 2d using a random projection
mode (default).
.TP 8
-.B \-projection-3d perspective \fP(Shortcut: \fB\-perspective-3d\fP)
+.B \-\-projection-3d perspective \fP(Shortcut: \fB\-\-perspective-3d\fP)
Project the projective plane from 3d to 2d using a perspective
projection.
.TP 8
-.B \-projection-3d orthographic \fP(Shortcut: \fB\-orthographic-3d\fP)
+.B \-\-projection-3d orthographic \fP(Shortcut: \fB\-\-orthographic-3d\fP)
Project the projective plane from 3d to 2d using an orthographic
projection.
.PP
The following three options are mutually exclusive. They determine
how the projective plane is projected from 4d to 3d.
.TP 8
-.B \-projection-4d random
+.B \-\-projection-4d random
Project the projective plane from 4d to 3d using a random projection
mode (default).
.TP 8
-.B \-projection-4d perspective \fP(Shortcut: \fB\-perspective-4d\fP)
+.B \-\-projection-4d perspective \fP(Shortcut: \fB\-\-perspective-4d\fP)
Project the projective plane from 4d to 3d using a perspective
projection.
.TP 8
-.B \-projection-4d orthographic \fP(Shortcut: \fB\-orthographic-4d\fP)
+.B \-\-projection-4d orthographic \fP(Shortcut: \fB\-\-orthographic-4d\fP)
Project the projective plane from 4d to 3d using an orthographic
projection.
.PP
to achieve a nice visualization. Therefore, in walk-and-turn mode the
speeds you have selected are divided by 5 internally.
.TP 8
-.B \-speed-wx \fIfloat\fP
+.B \-\-speed-wx \fIfloat\fP
Rotation speed around the wx plane (default: 1.1).
.TP 8
-.B \-speed-wy \fIfloat\fP
+.B \-\-speed-wy \fIfloat\fP
Rotation speed around the wy plane (default: 1.3).
.TP 8
-.B \-speed-wz \fIfloat\fP
+.B \-\-speed-wz \fIfloat\fP
Rotation speed around the wz plane (default: 1.5).
.TP 8
-.B \-speed-xy \fIfloat\fP
+.B \-\-speed-xy \fIfloat\fP
Rotation speed around the xy plane (default: 1.7).
.TP 8
-.B \-speed-xz \fIfloat\fP
+.B \-\-speed-xz \fIfloat\fP
Rotation speed around the xz plane (default: 1.9).
.TP 8
-.B \-speed-yz \fIfloat\fP
+.B \-\-speed-yz \fIfloat\fP
Rotation speed around the yz plane (default: 2.1).
.PP
The following two options determine the walking speed and direction.
.TP 8
-.B \-walk-direction \fIfloat\fP
+.B \-\-walk-direction \fIfloat\fP
The walking direction is measured as an angle in degrees in the 2d
square that forms the coordinate system of the surface of the
projective plane (default: 83.0). A value of 0 or 180 means that the
(analogous to a direction band). Any other value results in a curved
path from the origin to the line at infinity and back.
.TP 8
-.B \-walk-speed \fIfloat\fP
+.B \-\-walk-speed \fIfloat\fP
The walking speed is measured in percent of some sensible maximum
speed (default: 20.0).
.SH INTERACTION
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
providence \- eye in glory screenhack
.SH SYNOPSIS
.B providence
-[\-display \fIhost:display.screen\fP]
-[\-window]
-[\-root]
- [\-install]
-[\-visual \fIvisual\fP]
-[\-delay \fImicroseconds\fP]
-[\-wireframe]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+ [\-\-install]
+[\-\-visual \fIvisual\fP]
+[\-\-delay \fImicroseconds\fP]
+[\-\-wireframe]
+[\-\-fps]
.SH DESCRIPTION
The \fIprovidence\fP code displays an eye, shrouded in glory, set upon the
base of a pyramid.
.I providence
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-install
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-eye
+.B \-\-eye
Draw an eye/$.
.TP 8
-.B \-visual \fIvisual\fP\fP
+.B \-\-visual \fIvisual\fP\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-wireframe
+.B \-\-wireframe
Render in wireframe (with hidden line removal) instead of as textured solids.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
pulsar \- intersecting planes, alpha blending, fog, and textures.
.SH SYNOPSIS
.B pulsar
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-no-light]
-[\-wire]
-[\-delay \fInumber\fP]
-[\-quads \fInumber\fP]
-[\-image \fIfile\fP]
-[\-light]
-[\-fog]
-[\-texture]
-[\-mipmap]
-[\-no-blend]
-[\-antialias]
-[\-texture_quality]
-[\-do_depth]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-no-light]
+[\-\-wire]
+[\-\-delay \fInumber\fP]
+[\-\-quads \fInumber\fP]
+[\-\-image \fIfile\fP]
+[\-\-light]
+[\-\-fog]
+[\-\-texture]
+[\-\-mipmap]
+[\-\-no-blend]
+[\-\-antialias]
+[\-\-texture_quality]
+[\-\-do_depth]
+[\-\-fps]
.SH DESCRIPTION
Draws some intersecting planes, making use of alpha blending, fog,
textures, and mipmaps, plus a ``frames per second'' meter so that you can
tell how fast your graphics card is... Requires OpenGL.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-light | \-no-light
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-light | \-\-no-light
Use Flat Coloring.
.TP 8
-.B \-wire
+.B \-\-wire
Render in wireframe instead of solid.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 10000 (0.01 seconds.).
.TP 8
-.B \-image \fIfile\fP
+.B \-\-image \fIfile\fP
The texture map to use.
.TP 8
-.B \-quads \fInumber\fP
+.B \-\-quads \fInumber\fP
Quad Count. 1 - 50. Default: 5.
.TP 8
-.B \-light | \-no-light
+.B \-\-light | \-\-no-light
Whether to enable lighting.
.TP 8
-.B \-fog | \-no-fog
+.B \-\-fog | \-\-no-fog
Whether to enable fog.
.TP 8
-.B \-texture | \-no-texture
+.B \-\-texture | \-\-no-texture
Whether to enable texturing.
.TP 8
-.B \-mipmap | \-no-mipmap
+.B \-\-mipmap | \-\-no-mipmap
Whether to enable texture mipmaps.
.TP 8
-.B \-blend | \-no-blend
+.B \-\-blend | \-\-no-blend
Whether to enable blending.
.TP 8
-.B \-antialias | \-no-antialias
+.B \-\-antialias | \-\-no-antialias
Whether to anti-alias lines.
.TP 8
-.B \-texture_quality | \-no-texture_quality
+.B \-\-texture_quality | \-\-no-texture_quality
Whether to enable texture filtering.
.TP 8
-.B \-do_depth | \-no-do_depth
+.B \-\-do_depth | \-\-no-do_depth
Whether to enable depth buffer.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
quasicrystal \- aperiodic plane tilings.
.SH SYNOPSIS
.B quasicrystal
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-speed \fInumber\fP]
-[\-count \fInumber\fP]
-[\-contrast \fIpercent\fP]
-[\-no-wander]
-[\-no-spin]
-[\-asymmetric]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-speed \fInumber\fP]
+[\-\-count \fInumber\fP]
+[\-\-contrast \fIpercent\fP]
+[\-\-no-wander]
+[\-\-no-spin]
+[\-\-asymmetric]
+[\-\-fps]
.SH DESCRIPTION
A quasicrystal is a structure that is ordered but aperiodic.
Two-dimensional quasicrystals can be generated by adding a set of planes
"RD-Bomb", "CWaves" and "Penrose" screen savers.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 30000 (0.03 seconds.).
.TP 8
-.B \-speed \fInumber\fP
+.B \-\-speed \fInumber\fP
Animation speed. 2 for twice as fast, 0.5 for half as fast.
.TP 8
-.B \-contrast \fIcontrast\fP
+.B \-\-contrast \fIcontrast\fP
Contrast. Sort of. Default 30%.
.TP 8
-.B \-count \fInumber\fP
+.B \-\-count \fInumber\fP
How many planes to use. Default 17.
.TP 8
-.B \-wander | \-no-wander
+.B \-\-wander | \-\-no-wander
Whether the planes should displace horizontally and vertically.
.TP 8
-.B \-spin | \-no-spin
+.B \-\-spin | \-\-no-spin
Whether the planes should rotate.
.TP 8
-.B \-asymmetric
+.B \-\-asymmetric
Allow each plane to rotate freely instead of being constrained to an
even distribution around the circle.
.TP 8
-.B \-fps | \-no-fps
+.B \-\-fps | \-\-no-fps
Whether to show a frames-per-second display at the bottom of the screen.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
queens \- n queens screensaver
.SH SYNOPSIS
.B queens
-[\-display \fIhost:display.screen\fP]
-[\-window]
-[\-root]
-[\-install]
-[\-visual \fIvisual\fP]
-[\-delay \fImicroseconds\fP]
-[\-wireframe]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-install]
+[\-\-visual \fIvisual\fP]
+[\-\-delay \fImicroseconds\fP]
+[\-\-wireframe]
+[\-\-fps]
.SH DESCRIPTION
The \fIqueens\fP program solves the n-queens problem (where, in this
program, N is between 5 and 10 queens) using a straightforward
.I queens
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-install
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP\fP
+.B \-\-visual \fIvisual\fP\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-wireframe
+.B \-\-wireframe
Render in wireframe instead of solid.
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH BUGS
It's not unknown for this and other OpenGL hacks to fail under hardware accelaration (UtahGLX) and take the X server with them. Texture images must be 16x16 or 32x32 or 64x64 etc.
.SH SEE ALSO
raverhoop \- Simulates an LED hula hoop in a dark room.
.SH SYNOPSIS
.B raverhoop
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-ncolors \fInumber\fP]
-[\-lights \fInumber\fP]
-[\-speed \fInumber\fP]
-[\-light-speed \fInumber\fP]
-[\-sustain \fInumber\fP]
-[\-no-wander]
-[\-no-spin]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-ncolors \fInumber\fP]
+[\-\-lights \fInumber\fP]
+[\-\-speed \fInumber\fP]
+[\-\-light-speed \fInumber\fP]
+[\-\-sustain \fInumber\fP]
+[\-\-no-wander]
+[\-\-no-spin]
+[\-\-fps]
.SH DESCRIPTION
Simulates an LED hula hoop in a dark room. Oontz oontz oontz.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 20000 (0.02 seconds).
.TP 8
-.B \-ncolors \fInumber\fP
+.B \-\-ncolors \fInumber\fP
The number of colors to use on the hoop. Default: 12.
.TP 8
-.B \-lights \fInumber\fP
+.B \-\-lights \fInumber\fP
The number of LEDs comprising the hoop. Default: 200.
.TP 8
-.B \-speed \fInumber\fP
+.B \-\-speed \fInumber\fP
Speed of the motion of the object.
2.0 means twice as fast, 0.5 means half as fast.
.TP 8
-.B \-light-speed \fInumber\fP
+.B \-\-light-speed \fInumber\fP
Speed at which the lights animate.
2.0 means twice as fast, 0.5 means half as fast.
.TP 8
-.B \-sustain \fInumber\fP
+.B \-\-sustain \fInumber\fP
Speed at which the after-images / vapor trails fade away.
2.0 means they last twice as long, 0.5 means half as long.
.TP 8
-.B \-wander | \-no-wander
+.B \-\-wander | \-\-no-wander
Whether the object should wander around the screen.
.TP 8
-.B \-spin | \-no-spin
+.B \-\-spin | \-\-no-spin
Whether the scene itself should spin.
.TP 8
-.B \-fps | \-no-fps
+.B \-\-fps | \-\-no-fps
Whether to show a frames-per-second display at the bottom of the screen.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
razzledazzle \- screen saver.
.SH SYNOPSIS
.B razzledazzle
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-speed \fInumber\fP]
-[\-ncolors \fInumber\fP]
-[\-density \fInumber\fP]
-[\-thickness \fInumber\fP]
-[\-mode \fIstring\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-speed \fInumber\fP]
+[\-\-ncolors \fInumber\fP]
+[\-\-density \fInumber\fP]
+[\-\-thickness \fInumber\fP]
+[\-\-mode \fIstring\fP]
+[\-\-fps]
.SH DESCRIPTION
Generates an infinitely-scrolling sequence of dazzle camouflage patterns.
Dazzle Ships were military vessels during World War I and early in World
heading. This was a big deal before the invention of Radar.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 30000 (0.03 seconds).
.TP 8
-.B \-speed \fInumber\fP
+.B \-\-speed \fInumber\fP
Animation speed. 2.0 means twice as fast, 0.5 means half as fast.
.TP 8
-.B \-ncolors \fInumber\fP
+.B \-\-ncolors \fInumber\fP
Colors. Default: 2.
.TP 8
-.B \-density \fInumber\fP
+.B \-\-density \fInumber\fP
Thickness of the grid, and overall complexity. 1 - 10. Default: 5.0.
.TP 8
-.B \-thickness \fInumber\fP
+.B \-\-thickness \fInumber\fP
Thickness of the lines. 0.05 - 1.0. Default: 0.1.
.TP 8
-.B \-mode \fIstring\fP
+.B \-\-mode \fIstring\fP
Random, Ships or Flat. Default Random.
.TP 8
-.B \-fps | \-no-fps
+.B \-\-fps | \-\-no-fps
Whether to show a frames-per-second display at the bottom of the screen.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
smoothly deforms between the Roman surface and the Boy surface.
.SH SYNOPSIS
.B romanboy
-[\-display \fIhost:display.screen\fP]
-[\-install]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fIusecs\fP]
-[\-fps]
-[\-mode \fIdisplay-mode\fP]
-[\-wireframe]
-[\-surface]
-[\-transparent]
-[\-appearance \fIappearance\fP]
-[\-solid]
-[\-distance-bands]
-[\-direction-bands]
-[\-colors \fIcolor-scheme\fP]
-[\-onesided-colors]
-[\-twosided-colors]
-[\-distance-colors]
-[\-direction-colors]
-[\-change-colors]
-[\-view-mode \fIview-mode\fP]
-[\-walk]
-[\-turn]
-[\-no-deform]
-[\-deformation-speed \fIfloat\fP]
-[\-initial-deformation \fIfloat\fP]
-[\-roman]
-[\-boy]
-[\-surface-order \fInumber\fP]
-[\-orientation-marks]
-[\-projection \fImode\fP]
-[\-perspective]
-[\-orthographic]
-[\-speed-x \fIfloat\fP]
-[\-speed-y \fIfloat\fP]
-[\-speed-z \fIfloat\fP]
-[\-walk-direction \fIfloat\fP]
-[\-walk-speed \fIfloat\fP]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-install]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fIusecs\fP]
+[\-\-fps]
+[\-\-mode \fIdisplay-mode\fP]
+[\-\-wireframe]
+[\-\-surface]
+[\-\-transparent]
+[\-\-appearance \fIappearance\fP]
+[\-\-solid]
+[\-\-distance-bands]
+[\-\-direction-bands]
+[\-\-colors \fIcolor-scheme\fP]
+[\-\-onesided-colors]
+[\-\-twosided-colors]
+[\-\-distance-colors]
+[\-\-direction-colors]
+[\-\-change-colors]
+[\-\-view-mode \fIview-mode\fP]
+[\-\-walk]
+[\-\-turn]
+[\-\-no-deform]
+[\-\-deformation-speed \fIfloat\fP]
+[\-\-initial-deformation \fIfloat\fP]
+[\-\-roman]
+[\-\-boy]
+[\-\-surface-order \fInumber\fP]
+[\-\-orientation-marks]
+[\-\-projection \fImode\fP]
+[\-\-perspective]
+[\-\-orthographic]
+[\-\-speed-x \fIfloat\fP]
+[\-\-speed-y \fIfloat\fP]
+[\-\-speed-z \fIfloat\fP]
+[\-\-walk-direction \fIfloat\fP]
+[\-\-walk-speed \fIfloat\fP]
.SH DESCRIPTION
The \fIromanboy\fP program shows a 3d immersion of the real projective
plane that smoothly deforms between the Roman surface and the Boy
.I romanboy
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-install
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual
class, or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-delay \fImicroseconds\fP
+.B \-\-delay \fImicroseconds\fP
How much of a delay should be introduced between steps of the
animation. Default 10000, or 1/100th second.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.PP
The following four options are mutually exclusive. They determine how
the projective plane is displayed.
.TP 8
-.B \-mode random
+.B \-\-mode random
Display the projective plane in a random display mode (default).
.TP 8
-.B \-mode wireframe \fP(Shortcut: \fB\-wireframe\fP)
+.B \-\-mode wireframe \fP(Shortcut: \fB\-\-wireframe\fP)
Display the projective plane as a wireframe mesh.
.TP 8
-.B \-mode surface \fP(Shortcut: \fB\-surface\fP)
+.B \-\-mode surface \fP(Shortcut: \fB\-\-surface\fP)
Display the projective plane as a solid surface.
.TP 8
-.B \-mode transparent \fP(Shortcut: \fB\-transparent\fP)
+.B \-\-mode transparent \fP(Shortcut: \fB\-\-transparent\fP)
Display the projective plane as a transparent surface.
.PP
The following four options are mutually exclusive. They determine the
appearance of the projective plane.
.TP 8
-.B \-appearance random
+.B \-\-appearance random
Display the projective plane with a random appearance (default).
.TP 8
-.B \-appearance solid \fP(Shortcut: \fB\-solid\fP)
+.B \-\-appearance solid \fP(Shortcut: \fB\-\-solid\fP)
Display the projective plane as a solid object.
.TP 8
-.B \-appearance distance-bands \fP(Shortcut: \fB\-distance-bands\fP)
+.B \-\-appearance distance-bands \fP(Shortcut: \fB\-\-distance-bands\fP)
Display the projective plane as see-through bands that lie at
increasing distances from the origin.
.PP
.TP 8
-.B \-appearance direction-bands \fP(Shortcut: \fB\-direction-bands\fP)
+.B \-\-appearance direction-bands \fP(Shortcut: \fB\-\-direction-bands\fP)
Display the projective plane as see-through bands that lie at
increasing angles with respect to the origin.
.PP
The following four options are mutually exclusive. They determine how
to color the projective plane.
.TP 8
-.B \-colors random
+.B \-\-colors random
Display the projective plane with a random color scheme (default).
.TP 8
-.B \-colors onesided \fP(Shortcut: \fB\-onesided-colors\fP)
+.B \-\-colors onesided \fP(Shortcut: \fB\-\-onesided-colors\fP)
Display the projective plane with a single color.
.TP 8
-.B \-colors twosided \fP(Shortcut: \fB\-twosided-colors\fP)
+.B \-\-colors twosided \fP(Shortcut: \fB\-\-twosided-colors\fP)
Display the projective plane with two colors: one color one "side" and
the complementary color on the "other side." For static colors, the
colors are red and green. Note that the line at infinity lies at the
points where the red and green "sides" of the projective plane meet,
i.e., where the orientation of the projective plane reverses.
.TP 8
-.B \-colors distance \fP(Shortcut: \fB\-distance-colors\fP)
+.B \-\-colors distance \fP(Shortcut: \fB\-\-distance-colors\fP)
Display the projective plane with fully saturated colors that depend
on the distance of the points on the projective plane to the origin.
For static colors, the origin is displayed in red, while the line at
displayed as distance bands, each band will be displayed with a
different color.
.TP 8
-.B \-colors direction \fP(Shortcut: \fB\-direction-colors\fP)
+.B \-\-colors direction \fP(Shortcut: \fB\-\-direction-colors\fP)
Display the projective plane with fully saturated colors that depend
on the angle of the points on the projective plane with respect to the
origin. Angles in opposite directions to the origin (e.g., 15 and 205
The following options determine whether the colors with which the
projective plane is displayed are static or are changing dynamically.
.TP 8
-.B \-change-colors
+.B \-\-change-colors
Change the colors with which the projective plane is displayed
dynamically.
.TP 8
-.B \-no-change-colors
+.B \-\-no-change-colors
Use static colors to display the projective plane (default).
.PP
The following three options are mutually exclusive. They determine
how to view the projective plane.
.TP 8
-.B \-view-mode random
+.B \-\-view-mode random
View the projective plane in a random view mode (default).
.TP 8
-.B \-view-mode turn \fP(Shortcut: \fB\-turn\fP)
+.B \-\-view-mode turn \fP(Shortcut: \fB\-\-turn\fP)
View the projective plane while it turns in 3d.
.TP 8
-.B \-view-mode walk \fP(Shortcut: \fB\-walk\fP)
+.B \-\-view-mode walk \fP(Shortcut: \fB\-\-walk\fP)
View the projective plane as if walking on its surface.
.PP
The following options determine whether the surface is being deformed.
.TP 8
-.B \-deform
+.B \-\-deform
Deform the surface smoothly between the Roman and Boy surfaces
(default).
.TP 8
-.B \-no-deform
+.B \-\-no-deform
Don't deform the surface.
.PP
The following option determines the deformation speed.
.TP 8
-.B \-deformation-speed \fIfloat\fP
+.B \-\-deformation-speed \fIfloat\fP
The deformation speed is measured in percent of some sensible maximum
speed (default: 10.0).
.PP
The following options determine the initial deformation of the
surface. As described above, this is mostly useful if
-\fB\-no-deform\fP is specified.
+\fB\-\-no-deform\fP is specified.
.TP 8
-.B \-initial-deformation \fIfloat\fP
+.B \-\-initial-deformation \fIfloat\fP
The initial deformation is specified as a number between 0 and 1000.
A value of 0 corresponds to the Roman surface, while a value of 1000
corresponds to the Boy surface. The default value is 1000.
.TP 8
-.B \-roman
-This is a shortcut for \fB\-initial-deformation 0\fP.
+.B \-\-roman
+This is a shortcut for \fB\-\-initial-deformation 0\fP.
.TP 8
-.B \-boy
-This is a shortcut for \fB\-initial-deformation 1000\fP.
+.B \-\-boy
+This is a shortcut for \fB\-\-initial-deformation 1000\fP.
.PP
The following option determines the order of the surface to be
displayed.
.TP 8
-.B \-surface-order \fInumber\fP
+.B \-\-surface-order \fInumber\fP
The surface order can be set to values between 2 and 9 (default: 3).
As described above, odd surface orders result in generalized
immersions of the real projective plane, while even numbers result in
The following options determine whether orientation marks are shown on
the projective plane.
.TP 8
-.B \-orientation-marks
+.B \-\-orientation-marks
Display orientation marks on the projective plane.
.TP 8
-.B \-no-orientation-marks
+.B \-\-no-orientation-marks
Don't display orientation marks on the projective plane (default).
.PP
The following three options are mutually exclusive. They determine
how the projective plane is projected from 3d to 2d (i.e., to the
screen).
.TP 8
-.B \-projection random
+.B \-\-projection random
Project the projective plane from 3d to 2d using a random projection
mode (default).
.TP 8
-.B \-projection perspective \fP(Shortcut: \fB\-perspective\fP)
+.B \-\-projection perspective \fP(Shortcut: \fB\-\-perspective\fP)
Project the projective plane from 3d to 2d using a perspective
projection.
.TP 8
-.B \-projection orthographic \fP(Shortcut: \fB\-orthographic\fP)
+.B \-\-projection orthographic \fP(Shortcut: \fB\-\-orthographic\fP)
Project the projective plane from 3d to 2d using an orthographic
projection.
.PP
relatively small values, e.g., less than 4 in magnitude. In walk
mode, all speeds are ignored.
.TP 8
-.B \-speed-x \fIfloat\fP
+.B \-\-speed-x \fIfloat\fP
Rotation speed around the x axis (default: 1.1).
.TP 8
-.B \-speed-y \fIfloat\fP
+.B \-\-speed-y \fIfloat\fP
Rotation speed around the y axis (default: 1.3).
.TP 8
-.B \-speed-z \fIfloat\fP
+.B \-\-speed-z \fIfloat\fP
Rotation speed around the z axis (default: 1.5).
.PP
The following two options determine the walking speed and direction.
.TP 8
-.B \-walk-direction \fIfloat\fP
+.B \-\-walk-direction \fIfloat\fP
The walking direction is measured as an angle in degrees in the 2d
square that forms the coordinate system of the surface of the
projective plane (default: 83.0). A value of 0 or 180 means that the
(analogous to a direction band). Any other value results in a curved
path from the origin to the line at infinity and back.
.TP 8
-.B \-walk-speed \fIfloat\fP
+.B \-\-walk-speed \fIfloat\fP
The walking speed is measured in percent of some sensible maximum
speed (default: 20.0).
.SH INTERACTION
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
rubik \- screen saver that solves Rubik's Cube.
.SH SYNOPSIS
.B rubik
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-count \fInumber\fP]
-[\-cycles \fInumber\fP]
-[\-delay \fInumber\fP]
-[\-size \fInumber\fP]
-[\-hideshuffling]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-count \fInumber\fP]
+[\-\-cycles \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-size \fInumber\fP]
+[\-\-hideshuffling]
+[\-\-fps]
.SH DESCRIPTION
Draws a Rubik's Cube that rotates in three dimensions and repeatedly
shuffles and solves itself.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-count \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-count \fInumber\fP
Count. -100 - 100. Default: -30.
.TP 8
-.B \-cycles \fInumber\fP
+.B \-\-cycles \fInumber\fP
Timeout. 0 - 60. Default: 5.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 40000 (0.04 seconds.).
.TP 8
-.B \-size \fInumber\fP
+.B \-\-size \fInumber\fP
Size. -20 - 20. Default: -6.
.TP 8
-.B \-hideshuffling | \-no-hideshuffling
+.B \-\-hideshuffling | \-\-no-hideshuffling
Show Shuffling. Boolean.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
rubikblocks \- animates the Rubik's Mirror Blocks puzzle
.SH SYNOPSIS
.B rubikblocks
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-install]
-[\-delay \fImicroseconds\fP]
-[\-texture] [\-no\-texture]
-[\-mono]
-[\-wireframe]
-[\-spin] [\-no\-spin]
-[\-wander] [\-no\-wander]
-[\-randomize] [\-no\-randomize]
-[\-spinspeed \fInumber\fP]
-[\-rotspeed \fInumber\fP]
-[\-wanderspeed \fInumber\fP]
-[\-wait \fInumber\fP]
-[\-cubesize \fInumber\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-install]
+[\-\-delay \fImicroseconds\fP]
+[\-\-texture] [\-\-no\-texture]
+[\-\-mono]
+[\-\-wireframe]
+[\-\-spin] [\-\-no\-spin]
+[\-\-wander] [\-\-no\-wander]
+[\-\-randomize] [\-\-no\-randomize]
+[\-\-spinspeed \fInumber\fP]
+[\-\-rotspeed \fInumber\fP]
+[\-\-wanderspeed \fInumber\fP]
+[\-\-wait \fInumber\fP]
+[\-\-cubesize \fInumber\fP]
+[\-\-fps]
.SH DESCRIPTION
This program animates a puzzle called Rubik's Mirror Blocks.
The moves are chosen randomly.
.I rubikblocks
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-install
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP\fP
+.B \-\-visual \fIvisual\fP\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-delay \fImicroseconds\fP
+.B \-\-delay \fImicroseconds\fP
How long to pause between frames. Default is 20000, or 0.02 second.
.TP 8
-.B \-texture
+.B \-\-texture
Use texture maps. This is the default.
.TP 8
-.B \-no\-texture
+.B \-\-no\-texture
Use solid colors. Looks a bit weird.
.TP 8
-.B \-mono
+.B \-\-mono
Disable both texture maps and colors. Ditto.
.TP 8
-.B \-wireframe
+.B \-\-wireframe
Only draw outlines. Outlines of each piece, not only the whole object, are drawn.
.TP 8
-.B \-spin
+.B \-\-spin
Spin the whole object around X, Y and Z axes. This is the default.
.TP 8
-.B \-no\-spin
+.B \-\-no\-spin
Do not spin, stay in the same tilt all the time.
.TP 8
-.B \-wander
+.B \-\-wander
Move the object around the screen. This is the default.
.TP 8
-.B \-no\-wander
+.B \-\-no\-wander
Keep the object centered on the screen.
.TP 8
-.B \-randomize
+.B \-\-randomize
Shuffle the puzzle randomly at startup. This is the default.
.TP 8
-.B \-no\-randomize
+.B \-\-no\-randomize
Do not shuffle at startup, begin at the shape of cube.
.TP 8
-.B \-spinspeed \fInumber\fP
+.B \-\-spinspeed \fInumber\fP
The relative speed of spinning. Default is 1.0.
.TP 8
-.B \-rotspeed \fInumber\fP
+.B \-\-rotspeed \fInumber\fP
The relative speed of the moves. Default is 3.0. Setting to \(<= 0.0
makes the object stay at one configuration.
.TP 8
-.B \-wanderspeed \fInumber\fP
+.B \-\-wanderspeed \fInumber\fP
The relative speed of wandering around the screen. Default is 0.02.
.TP 8
-.B \-wait \fInumber\fP
+.B \-\-wait \fInumber\fP
How long to stay at final position after each move. The meaning of
the argument is again relative. Default is 40.0.
.TP 8
-.B \-cubesize \fInumber\fP
+.B \-\-cubesize \fInumber\fP
Size of the object. Value of 3.0 fills roughly all the screen.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
sballs \- draws balls spinning like crazy in GL
.SH SYNOPSIS
.B sballs
-[\-display \fIhost:display.screen\fP] [\-window] [\-root]
-[\-visual \fIvisual\fP] [\-delay \fImicroseconds\fP]
-[\-object \fIobject_number\fP]
-[\-cycles \fIsphere_speed\fP]
-[\-size \fIviewport_size\fP]
-[\-texture] [\-no-texture]
-[\-wireframe] [\-no-wireframe]
-[\-trackmouse] [\-no-trackmouse]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-visual \fIvisual\fP] [\-\-delay \fImicroseconds\fP]
+[\-\-object \fIobject_number\fP]
+[\-\-cycles \fIsphere_speed\fP]
+[\-\-size \fIviewport_size\fP]
+[\-\-texture] [\-\-no-texture]
+[\-\-wireframe] [\-\-no-wireframe]
+[\-\-trackmouse] [\-\-no-trackmouse]
+[\-\-fps]
.SH DESCRIPTION
The \fIsballs\fP program draws an animation of balls spinning like crazy in GL.
.SH OPTIONS
.I sballs
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-install
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.TP 8
-.B \-object \fIobject_number\fP\fP
+.B \-\-object \fIobject_number\fP\fP
Specify how the spheres are grouped (forming an object).
Objects are:
.TP 10
.B 8
star
.TP 8
-.B \-size \fIviewport_size\fP\fP
+.B \-\-size \fIviewport_size\fP\fP
Viewport of GL scene is specified size if greater than 32 and less than screensize. Default value is 0, meaning full screensize.
.TP 8
-.B \-texture
+.B \-\-texture
Show a textured background and spheres. This is the default.
.TP 8
-.B \-no\-texture
+.B \-\-no\-texture
Disables texturing the animation.
.TP 8
-.B \-trackmouse
+.B \-\-trackmouse
Let the mouse be a joystick to change the view of the animation.
This implies
-.I \-no\-wander.
+.I \-\-no\-wander.
.TP 8
-.B \-no\-trackmouse
+.B \-\-no\-trackmouse
Disables mouse tracking. This is the default.
.TP 8
-.B \-wire
+.B \-\-wire
Draw a wireframe rendition of the spheres.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
sierpinski3d \- 3D Sierpinski triangle fractal.
.SH SYNOPSIS
.B sierpinski3d
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-speed \fInumber\fP]
-[\-depth \fInumber\fP]
-[\-wireframe]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-speed \fInumber\fP]
+[\-\-depth \fInumber\fP]
+[\-\-wireframe]
+[\-\-fps]
.SH DESCRIPTION
This draws the three-dimensional variant of the recursive Sierpinski
triangle fractal, using GL.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 20000 (0.02 seconds.).
.TP 8
-.B \-speed \fInumber\fP
+.B \-\-speed \fInumber\fP
Number of frames before changing shape. Default: 150.
.TP 8
-.B \-depth \fInumber\fP
+.B \-\-depth \fInumber\fP
Max depth to descend. Default: 5. You probably don't have enough
memory for 6.
.TP 8
-.B \-wireframe
+.B \-\-wireframe
Render in wireframe instead of solid.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
skytentacles \- 3D tentacles from the sky!
.SH SYNOPSIS
.B skytentacles
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fIint\fP]
-[\-speed \fIratio\fP]
-[\-count \fIint\fP]
-[\-slices \fIint\fP]
-[\-length \fIfloat\fP]
-[\-wiggliness \fIratio\fP]
-[\-flexibility \fIratio\fP]
-[\-color \fIcolor\fP]
-[\-stripe\-color \fIcolor\fP]
-[\-sucker\-color \fIcolor\fP]
-[\-segments \fIint\fP]
-[\-thickness \fIratio\fP]
-[\-no\-smooth]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fIint\fP]
+[\-\-speed \fIratio\fP]
+[\-\-count \fIint\fP]
+[\-\-slices \fIint\fP]
+[\-\-length \fIfloat\fP]
+[\-\-wiggliness \fIratio\fP]
+[\-\-flexibility \fIratio\fP]
+[\-\-color \fIcolor\fP]
+[\-\-stripe\-color \fIcolor\fP]
+[\-\-sucker\-color \fIcolor\fP]
+[\-\-segments \fIint\fP]
+[\-\-thickness \fIratio\fP]
+[\-\-no\-smooth]
+[\-\-fps]
.SH DESCRIPTION
There is a tentacled abomination in the sky. From above you it devours.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fIint\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fIint\fP
Delay between frames, in microseconds. Default 30000.
.TP 8
-.B \-speed \fIratio\fP
+.B \-\-speed \fIratio\fP
Less than 1 for slower, greater than 1 for faster. Default 1.
.TP 8
-.B \-count \fIint\fP
+.B \-\-count \fIint\fP
How many tentacles. Default 8.
.TP 8
-.B \-thickness \fIratio\fP
+.B \-\-thickness \fIratio\fP
Less than 1 for thinner tentacles, greater than 1 for thicker. Default 1.
.TP 8
-.B \-length \fIratio\fP
+.B \-\-length \fIratio\fP
Length of the tentacles. Default 9.
.TP 8
-.B \-wiggliness \fIratio\fP
+.B \-\-wiggliness \fIratio\fP
A measure of how bendy the tentacles are. Smaller numbers result in
smoother flexing; larger numbers make it "crinkly". Default 0.35.
.TP 8
-.B \-flexibility \fIratio\fP
+.B \-\-flexibility \fIratio\fP
Another measure of how bendy the tentacles are. Smaller numbers
result in straighter tentacles; larger numbers result in more extreme
curves. Default 0.35.
.TP 8
-.B \-color \fIcolor\fP
+.B \-\-color \fIcolor\fP
.TP 8
-.B \-stripe\-color \fIcolor\fP
+.B \-\-stripe\-color \fIcolor\fP
.TP 8
-.B \-sucker\-color \fIcolor\fP
+.B \-\-sucker\-color \fIcolor\fP
The colors of the various parts of the tentacle. Default green
with a redish stripe.
.TP 8
-.B \-slices \fIint\fP
+.B \-\-slices \fIint\fP
.TP 8
-.B \-segments \fIint\fP
+.B \-\-segments \fIint\fP
Larger numbers increase number of polygons in the object mesh.
Default 32.
.TP 8
-.B \-no\-smooth
+.B \-\-no\-smooth
Make the tentacles appear faceted instead of smooth.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
sonar \- display a sonar scope
.SH SYNOPSIS
.B sonar
-[\-ping \fIhosts-or-subnets\fP]
-[\-ping\-timeout \fIint\fP]
-[\-delay \fIusecs\fP]
-[\-speed \fIratio\fP]
-[\-sweep-size \fIratio\fP]
-[\-font-size \fIpoints\fP]
-[\-team-a-name \fIstring\fP]
-[\-team-b-name \fIstring\fP]
-[\-team-a-count \fIint\fP]
-[\-team-b-count \fIint\fP]
-[\-no\-dns]
-[\-no\-times]
-[\-no\-wobble]
-[\-debug]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-ping \fIhosts-or-subnets\fP]
+[\-\-ping\-timeout \fIint\fP]
+[\-\-delay \fIusecs\fP]
+[\-\-speed \fIratio\fP]
+[\-\-sweep-size \fIratio\fP]
+[\-\-font-size \fIpoints\fP]
+[\-\-team-a-name \fIstring\fP]
+[\-\-team-b-name \fIstring\fP]
+[\-\-team-a-count \fIint\fP]
+[\-\-team-b-count \fIint\fP]
+[\-\-no\-dns]
+[\-\-no\-times]
+[\-\-no\-wobble]
+[\-\-debug]
+[\-\-fps]
.SH DESCRIPTION
This draws a sonar screen that pings (get it?) the hosts on
your local network, and plots their distance (response time) from you.
.I sonar
understands the following options:
.TP 8
-.B \-ping \fIhosts-or-subnets\fP
+.B \-\-visual \fIvisual\fP
+Specify which visual to use. Legal values are the name of a visual class,
+or the id number (decimal or hex) of a specific visual.
+.TP 8
+.B \-\-window
+Draw on a newly-created window. This is the default.
+.TP 8
+.B \-\-root
+Draw on the root window.
+.TP 8
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-ping \fIhosts-or-subnets\fP
The list of things to ping, separated by commas or spaces.
Elements of this list may be:
.RS 8
sonar -ping $HOME/.ssh/known_hosts
.RE
.TP 8
-.B \-ping\-timeout \fIint\fP
+.B \-\-ping\-timeout \fIint\fP
The amount of time in milliseconds the program will wait for an answer
to a ping.
.TP 8
-.B \-delay \fIint\fP
+.B \-\-delay \fIint\fP
Delay between frames, in microseconds. Default 20000.
.TP 8
-.B \-speed \fIratio\fP
+.B \-\-speed \fIratio\fP
Less than 1 for slower, greater than 1 for faster. Default 1.
.TP 8
-.B \-sweep-size \fIratio\fP
+.B \-\-sweep-size \fIratio\fP
How big the glowing sweep area should be. Default 0.3.
.TP 8
-.B \-font-size \fIpoints\fP
+.B \-\-font-size \fIpoints\fP
How large the text should be. Default 10 points.
.TP 8
-.B \-no\-wobble
+.B \-\-no\-wobble
Keep the display stationary instead of very slowly wobbling back and forth.
.TP 8
-.B \-no\-dns
+.B \-\-no\-dns
Do not attempt to resolve IP addresses to hostnames.
.TP 8
-.B \-no\-times
+.B \-\-no\-times
Do not display ping times beneath the host names.
.TP 8
-.B \-team-a-name \fIstring\fP
+.B \-\-team-a-name \fIstring\fP
In simulation mode, the name of team A.
.TP 8
-.B \-team-b-name \fIstring\fP
+.B \-\-team-b-name \fIstring\fP
In simulation mode, the name of team B.
.TP 8
-.B \-team-a-count \fIint\fP
+.B \-\-team-a-count \fIint\fP
In simulation mode, the number of bogies on team A.
.TP 8
-.B \-team-b-count \fIint\fP
+.B \-\-team-b-count \fIint\fP
In simulation mode, the number of bogies on team B.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, polygon count, and CPU load.
-
.PP
In ping-mode, the display is a logarithmic scale, calibrated so that the
three rings represent ping times of approximately 2.5, 70 and 2,000
seconds to respond, they won't show up; and if you are pinging several
hosts with very fast response times, they will all appear close to the
center of the screen (making their names hard to read.)
-
.SH INSTALLATION
For this program to be able to ping other hosts, it must have the
-ability to open ICMP sockets, which is usually an action that requires
-additional privileges.
-
-If your system has
-.BR setcap (8)
-then this permission can be added with
-.nf
-.sp
- setcap cap_net_raw=p sonar
-.sp
-.fi
-Otherwise, the program must be setuid root in order to ping hosts.
+ability to open ICMP sockets, which requires that it be setuid root.
Privileges are disavowed shortly after startup (just after connecting
to the X server) so this is believed to be safe:
.nf
chmod u+s sonar
.sp
.fi
-It is not necessary to use setcap or setuid on macOS systems, as
-unprivileged programs can ping by using ICMP DGRAM sockets instead
-of ICMP RAW.
.SH BUGS
Does not support IPv6.
+.SH ENVIRONMENT
+.PP
+.TP 8
+.B DISPLAY
+to get the default host and display number.
+.TP 8
+.B XENVIRONMENT
+to get the name of a resource file that overrides the global resources
+stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1),
.BR ping (8),
.BR ping6 (8)
.SH COPYRIGHT
-Copyright \(co 2000-2021 by Jamie Zawinski <jwz@jwz.org>
+Copyright \(co 2000-2022 by Jamie Zawinski <jwz@jwz.org>
.RE
Copyright \(co 1998 by Stephen Martin. <smartin@canada.com>
documentation. No representations are made about the suitability of this
software for any purpose. It is provided "as is" without express or
implied warranty.
-
.SH AUTHORS
Stephen Martin <smartin@canada.com>, 3-nov-1998.
sphereeversion - Displays a sphere eversion.
.SH SYNOPSIS
.B sphereeversion
-[\-display \fIhost:display.screen\fP]
-[\-install]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fIusecs\fP]
-[\-fps]
-[\-eversion-method \fImethod\fP]
-[\-analytic]
-[\-corrugations]
-[\-mode \fIdisplay-mode\fP]
-[\-surface]
-[\-transparent]
-[\-appearance \fIappearance\fP]
-[\-solid]
-[\-parallel-bands]
-[\-meridian-bands]
-[\-graticule \fImode\fP]
-[\-colors \fIcolor-scheme\fP]
-[\-twosided-colors]
-[\-parallel-colors]
-[\-meridian-colors]
-[\-earth-colors]
-[\-deformation-speed \fIfloat\fP]
-[\-projection \fImode\fP]
-[\-perspective]
-[\-orthographic]
-[\-surface-order \fIorder\fP]
-[\-lunes-1]
-[\-lunes-2]
-[\-lunes-4]
-[\-lunes-8]
-[\-hemispheres-1]
-[\-hemispheres-2]
-[\-speed-x \fIfloat\fP]
-[\-speed-y \fIfloat\fP]
-[\-speed-z \fIfloat\fP]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-install]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fIusecs\fP]
+[\-\-fps]
+[\-\-eversion-method \fImethod\fP]
+[\-\-analytic]
+[\-\-corrugations]
+[\-\-mode \fIdisplay-mode\fP]
+[\-\-surface]
+[\-\-transparent]
+[\-\-appearance \fIappearance\fP]
+[\-\-solid]
+[\-\-parallel-bands]
+[\-\-meridian-bands]
+[\-\-graticule \fImode\fP]
+[\-\-colors \fIcolor-scheme\fP]
+[\-\-twosided-colors]
+[\-\-parallel-colors]
+[\-\-meridian-colors]
+[\-\-earth-colors]
+[\-\-deformation-speed \fIfloat\fP]
+[\-\-projection \fImode\fP]
+[\-\-perspective]
+[\-\-orthographic]
+[\-\-surface-order \fIorder\fP]
+[\-\-lunes-1]
+[\-\-lunes-2]
+[\-\-lunes-4]
+[\-\-lunes-8]
+[\-\-hemispheres-1]
+[\-\-hemispheres-2]
+[\-\-speed-x \fIfloat\fP]
+[\-\-speed-y \fIfloat\fP]
+[\-\-speed-z \fIfloat\fP]
.SH DESCRIPTION
The \fIsphereeversion\fP program shows a sphere eversion, i.e., a
smooth deformation (homotopy) that turns a sphere inside out. During
is applied to the eight lunes. Finally, the corrugations are removed
to obtain the everted sphere.
.PP
-To see the eversion for a single lune, the option \fB\-lunes-1\fP can
+To see the eversion for a single lune, the option \fB\-\-lunes-1\fP can
be used. Using this option, the eversion, as described above, is
easier to understand. It is also possible to display two lunes using
-\fB\-lunes-2\fP and four lunes using \fB\-lunes-4\fP. Using fewer
+\fB\-\-lunes-2\fP and four lunes using \fB\-\-lunes-4\fP. Using fewer
than eight lunes reduces the visual complexity of the eversion and may
help to understand the method.
.PP
Furthermore, it is possible to display only one hemisphere using the
-option \fB\-hemispheres-1\fP. This allows to see what is happening in
+option \fB\-\-hemispheres-1\fP. This allows to see what is happening in
the center of the sphere during the eversion. Note that the north and
south half of the sphere move in a symmetric fashion during the
eversion. Hence, the eversion is actually composed of 16 semi-lunes
(spherical triangles from the equator to the poles) that all deform in
-the same manner. By specifying \fB\-lunes-1 \-hemispheres-1\fP, the
+the same manner. By specifying \fB\-\-lunes-1 \-\-hemispheres-1\fP, the
deformation of one semi-lune can be observed.
.PP
Note that the options described above are only intended for
.I sphereeversion
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-install
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual
class, or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-delay \fImicroseconds\fP
+.B \-\-delay \fImicroseconds\fP
How much of a delay should be introduced between steps of the
animation. Default 10000, or 1/100th second.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.PP
The following three options are mutually exclusive. They determine
which sphere eversion method is used.
.TP 8
-.B \-eversion-method random
+.B \-\-eversion-method random
Use a random sphere eversion method (default).
.TP 8
-.B \-eversion-method analytic \fP(Shortcut: \fB\-analytic\fP)
+.B \-\-eversion-method analytic \fP(Shortcut: \fB\-\-analytic\fP)
Use the analytic sphere eversion method.
.TP 8
-.B \-eversion-method corrugations \fP(Shortcut: \fB\-corrugations\fP)
+.B \-\-eversion-method corrugations \fP(Shortcut: \fB\-\-corrugations\fP)
Use the corrugations sphere eversion method.
.PP
The following three options are mutually exclusive. They determine
how the deformed sphere is displayed.
.TP 8
-.B \-mode random
+.B \-\-mode random
Display the sphere in a random display mode (default).
.TP 8
-.B \-mode surface \fP(Shortcut: \fB\-surface\fP)
+.B \-\-mode surface \fP(Shortcut: \fB\-\-surface\fP)
Display the sphere as a solid surface.
.TP 8
-.B \-mode transparent \fP(Shortcut: \fB\-transparent\fP)
+.B \-\-mode transparent \fP(Shortcut: \fB\-\-transparent\fP)
Display the sphere as a transparent surface.
.PP
The following four options are mutually exclusive. They determine the
appearance of the deformed sphere.
.TP 8
-.B \-appearance random
+.B \-\-appearance random
Display the sphere with a random appearance (default).
.TP 8
-.B \-appearance solid \fP(Shortcut: \fB\-solid\fP)
+.B \-\-appearance solid \fP(Shortcut: \fB\-\-solid\fP)
Display the sphere as a solid object.
.TP 8
-.B \-appearance parallel-bands \fP(Shortcut: \fB\-parallel-bands\fP)
+.B \-\-appearance parallel-bands \fP(Shortcut: \fB\-\-parallel-bands\fP)
Display the sphere as see-through bands that lie along the parallels
of the sphere.
.TP 8
-.B \-appearance meridian-bands \fP(Shortcut: \fB\-meridian-bands\fP)
+.B \-\-appearance meridian-bands \fP(Shortcut: \fB\-\-meridian-bands\fP)
Display the sphere as see-through bands that lie along the meridians
of the sphere.
.PP
only have an effect if the analytic sphere eversion method is
selected.
.TP 8
-.B \-graticule random
+.B \-\-graticule random
Randomly choose whether to display a graticule (default).
.TP 8
-.B \-graticule on
+.B \-\-graticule on
Display a graticule.
.TP 8
-.B \-graticule off
+.B \-\-graticule off
Do not display a graticule.
.PP
The following five options are mutually exclusive. They determine how
to color the deformed sphere.
.TP 8
-.B \-colors random
+.B \-\-colors random
Display the sphere with a random color scheme (default).
.TP 8
-.B \-colors twosided \fP(Shortcut: \fB\-twosided-colors\fP)
+.B \-\-colors twosided \fP(Shortcut: \fB\-\-twosided-colors\fP)
Display the sphere with two colors: red on one side and green on the
other side (analytic eversion) or gold on one side and purple on the
other side (corrugations eversion).
.TP 8
-.B \-colors parallel \fP(Shortcut: \fB\-parallel-colors\fP)
+.B \-\-colors parallel \fP(Shortcut: \fB\-\-parallel-colors\fP)
Display the sphere with colors that run from from blue to white to
orange on one side of the surface and from magenta to black to green
on the other side. The colors are aligned with the parallels of the
sphere. If the sphere is displayed as parallel bands, each band will
be displayed with a different color.
.TP 8
-.B \-colors meridian \fP(Shortcut: \fB\-meridian-colors\fP)
+.B \-\-colors meridian \fP(Shortcut: \fB\-\-meridian-colors\fP)
Display the sphere with colors that run from from blue to white to
orange to black and back to blue on one side of the surface and from
magenta to white to green to black and back to magenta on the other
the sphere is displayed as meridian bands, each band will be displayed
with a different color.
.TP 8
-.B \-colors earth \fP(Shortcut: \fB\-earth-colors\fP)
+.B \-\-colors earth \fP(Shortcut: \fB\-\-earth-colors\fP)
Display the sphere with a texture of earth by day on one side and with
a texture of earth by night on the other side. Initially, the earth
by day is on the outside and the earth by night on the inside. After
.PP
The following option determines the deformation speed.
.TP 8
-.B \-deformation-speed \fIfloat\fP
+.B \-\-deformation-speed \fIfloat\fP
The deformation speed is measured in percent of some sensible maximum
speed (default: 10.0).
.PP
how the deformed sphere is projected from 3d to 2d (i.e., to the
screen).
.TP 8
-.B \-projection random
+.B \-\-projection random
Project the sphere from 3d to 2d using a random projection mode
(default).
.TP 8
-.B \-projection perspective \fP(Shortcut: \fB\-perspective\fP)
+.B \-\-projection perspective \fP(Shortcut: \fB\-\-perspective\fP)
Project the sphere from 3d to 2d using a perspective projection.
.TP 8
-.B \-projection orthographic \fP(Shortcut: \fB\-orthographic\fP)
+.B \-\-projection orthographic \fP(Shortcut: \fB\-\-orthographic\fP)
Project the sphere from 3d to 2d using an orthographic projection.
.PP
The following option determines the order of the surface to be
displayed. This option only has an effect if the analytic sphere
eversion method is selected.
.TP 8
-.B \-surface-order \fIorder\fP
+.B \-\-surface-order \fIorder\fP
The surface order can be set to random or to a value between 2 and 5
(default: random). This determines the the complexity of the
deformation.
many lunes of the sphere are displayed. These options only have an
effect if the corrugations sphere eversion method is selected.
.TP 8
-.B \-lunes-1
+.B \-\-lunes-1
Display one of the eight lunes that form the sphere.
.TP 8
-.B \-lunes-2
+.B \-\-lunes-2
Display two of the eight lunes that form the sphere.
.TP 8
-.B \-lunes-4
+.B \-\-lunes-4
Display four of the eight lunes that form the sphere.
.TP 8
-.B \-lunes-8
+.B \-\-lunes-8
Display all eight lunes that form the sphere (default).
.PP
The following two options are mutually exclusive. They determine how
many hemispheres of the sphere are displayed. These options only have
an effect if the corrugations sphere eversion method is selected.
.TP 8
-.B \-hemispheres-1
+.B \-\-hemispheres-1
Display only one hemisphere of the sphere.
.TP 8
-.B \-hemispheres-2
+.B \-\-hemispheres-2
Display both hemispheres of the sphere (default).
.PP
The following three options determine the rotation speed of the
measured in degrees per frame. The speeds should be set to relatively
small values, e.g., less than 4 in magnitude.
.TP 8
-.B \-speed-x \fIfloat\fP
+.B \-\-speed-x \fIfloat\fP
Rotation speed around the x axis (default: 0.0).
.TP 8
-.B \-speed-y \fIfloat\fP
+.B \-\-speed-y \fIfloat\fP
Rotation speed around the y axis (default: 0.0).
.TP 8
-.B \-speed-z \fIfloat\fP
+.B \-\-speed-z \fIfloat\fP
Rotation speed around the z axis (default: 0.0).
.SH INTERACTION
If you run this program in standalone mode, you can rotate the
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1),
spheremonics \- 3d spherical harmonic shapes.
.SH SYNOPSIS
.B spheremonics
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-duration \fInumber\fP]
-[\-resolution \fInumber\fP]
-[\-wander]
-[\-no-spin]
-[\-spin \fI[XYZ]\fP]
-[\-wireframe]
-[\-no-smooth]
-[\-no-grid]
-[\-bbox]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-duration \fInumber\fP]
+[\-\-resolution \fInumber\fP]
+[\-\-wander]
+[\-\-no-spin]
+[\-\-spin \fI[XYZ]\fP]
+[\-\-wireframe]
+[\-\-no-smooth]
+[\-\-no-grid]
+[\-\-bbox]
+[\-\-fps]
.SH DESCRIPTION
These closed objects are commonly called spherical harmonics, although they
are only remotely related to the mathematical definition found in the
angular momentum operators.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 30000 (0.03 seconds.).
.TP 8
-.B \-duration \fInumber\fP
+.B \-\-duration \fInumber\fP
Duration. 5 - 1000. Default: 100.
.TP 8
-.B \-resolution \fInumber\fP
+.B \-\-resolution \fInumber\fP
Resolution. 5 - 100. Default: 64.
.TP 8
-.B \-wander | \-no-wander
+.B \-\-wander | \-\-no-wander
Whether the object should wander around the screen.
.TP 8
-.B \-spin \fI[XYZ]\fP
+.B \-\-spin \fI[XYZ]\fP
Around which axes should the object spin?
.TP 8
-.B \-no-spin
+.B \-\-no-spin
Don't spin.
.TP 8
-.B \-wireframe
+.B \-\-wireframe
Render in wireframe instead of solid.
.TP 8
-.B \-smooth | \-no-smooth
+.B \-\-smooth | \-\-no-smooth
Smoothed Lines. Boolean.
.TP 8
-.B \-grid | \-no-grid
+.B \-\-grid | \-\-no-grid
Draw Grid. Boolean.
.TP 8
-.B \-bbox | \-no-bbox
+.B \-\-bbox | \-\-no-bbox
Draw Bounding Box. Boolean.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
splitflap \- a simulation of a split-flap electromechanical display.
.SH SYNOPSIS
.B splitflap
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fImicroseconds\fP]
-[\-speed \fIfloat\fP]
-[\-width \fIcolumns\fP]
-[\-height \fIrows\fP]
-[\-mode text | clock12 | clock24]
-[\-no-wander]
-[\-spin \fIaxes\fP]
-[\-no\-spin]
-[\-front] [\-no-front]
-[\-wireframe]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fImicroseconds\fP]
+[\-\-speed \fIfloat\fP]
+[\-\-width \fIcolumns\fP]
+[\-\-height \fIrows\fP]
+[\-\-mode text | clock12 | clock24]
+[\-\-no-wander]
+[\-\-spin \fIaxes\fP]
+[\-\-no\-spin]
+[\-\-front] [\-\-no-front]
+[\-\-wireframe]
+[\-\-fps]
.SH DESCRIPTION
Simulates a split-flap display, an old style of electromechanical sign as
seen in airports and train stations, and commonly used in alarm clocks in
the 1960s and 1970s.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 20000 (0.02 seconds).
.TP 8
-.B \-speed \fInumber\fP
+.B \-\-speed \fInumber\fP
Animation speed. 2.0 means twice as fast, 0.5 means half as fast.
.TP 8
-.B \-width \fInumber\fP
+.B \-\-width \fInumber\fP
Columns of the display. Default: 22.
.TP 8
-.B \-height \fInumber\fP
+.B \-\-height \fInumber\fP
Rows of the display. Default: 8.
.TP 8
-.B \-mode clock12
+.B \-\-mode clock12
Display a 12-hour clock.
.TP 8
-.B \-mode clock24
+.B \-\-mode clock24
Display a 24-hour clock.
.TP 8
-.B \-front | \-no-front
+.B \-\-front | \-\-no-front
When spinning, never spin all the way around or upside down:
always face mostly forward so that the text is easily readable.
This is the default.
.TP 8
-.B \-no\-front
+.B \-\-no\-front
Allow spins to go all the way around or upside down.
.TP 8
-.B \-wander | \-no-wander
+.B \-\-wander | \-\-no-wander
Whether the object should wander around the screen.
.TP 8
-.B \-spin
+.B \-\-spin
Which axes around which the text should spin. The default is "XYZ",
-meaning rotate it freely in space. "\fB\-spin Z\fP" would rotate the
+meaning rotate it freely in space. "\fB\-\-spin Z\fP" would rotate the
text in the plane of the screen while not rotating it into or out
of the screen; etc.
.TP 8
-.B \-wireframe | \-no-wireframe
+.B \-\-wireframe | \-\-no-wireframe
Render in wireframe instead of solid.
.TP 8
-.B \-fps | \-no-fps
+.B \-\-fps | \-\-no-fps
Whether to show a frames-per-second display at the bottom of the screen.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
A geodesic sphere experiences a series of eruptions.
.SH SYNOPSIS
.B splodesic
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-no-wander]
-[\-no-spin]
-[\-fps]
-[\-delay \fInumber\fP]
-[\-speed \fInumber\fP]
-[\-depth \fInumber\fP]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-no-wander]
+[\-\-no-spin]
+[\-\-fps]
+[\-\-delay \fInumber\fP]
+[\-\-speed \fInumber\fP]
+[\-\-depth \fInumber\fP]
.SH DESCRIPTION
A geodesic sphere experiences a series of eruptions.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-wander | \-no-wander
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-wander | \-\-no-wander
Whether the object should wander around the screen.
.TP 8
-.B \-spin | \-no-spin
+.B \-\-spin | \-\-no-spin
Whether the object should spin.
.TP 8
-.B \-fps | \-no-fps
+.B \-\-fps | \-\-no-fps
Whether to show a frames-per-second display at the bottom of the screen.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 30000 (0.03 seconds).
.TP 8
-.B \-speed \fInumber\fP
+.B \-\-speed \fInumber\fP
Frequency of eruptions. 2.0 means twice as often, 0.5 means half as often.
.TP 8
-.B \-depth \fInumber\fP
+.B \-\-depth \fInumber\fP
Depth (frequency) of the geodesic. 0 - 5. Default: 4.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
sproingies \- Q-Bert meets Marble Madness!
.SH SYNOPSIS
.B sproingies
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-count \fInumber\fP]
-[\-delay \fInumber\fP]
-[\-size \fInumber\fP]
-[\-no\-fall]
-[\-wireframe]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-count \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-size \fInumber\fP]
+[\-\-no\-fall]
+[\-\-wireframe]
+[\-\-fps]
.SH DESCRIPTION
Q-Bert meets Marble Madness!
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-count \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-count \fInumber\fP
How many sproingies to draw at once. Default: 5.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 25000 (0.03 seconds.).
.TP 8
-.B \-size \fInumber\fP
+.B \-\-size \fInumber\fP
How much to scale the image down. Default 0 (full screen.)
.TP 8
-.B \-no\-fall
+.B \-\-no\-fall
Make sproingies "smart", so they do not fall down the edge.
.TP 8
-.B \-wireframe
+.B \-\-wireframe
Render in wireframe instead of solid.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
squirtorus \- how rainbows are made.
.SH SYNOPSIS
.B squirtorus
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-speed \fInumber\fP]
-[\-count \fInumber\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-speed \fInumber\fP]
+[\-\-count \fInumber\fP]
+[\-\-fps]
.SH DESCRIPTION
A scrolling landscape vents toroidal rainbows into the sky.
Above, the stars are slowly going out.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 30000 (0.03 seconds).
.TP 8
-.B \-speed \fInumber\fP
+.B \-\-speed \fInumber\fP
Scrolling speed. 2.0 means twice as fast, 0.5 means half as fast.
.TP 8
-.B \-count \fInumber\fP
+.B \-\-count \fInumber\fP
Count. 1 - 50. Default: 12.
.TP 8
-.B \-fps | \-no-fps
+.B \-\-fps | \-\-no-fps
Whether to show a frames-per-second display at the bottom of the screen.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
stairs \- Escher's infinite staircase.
.SH SYNOPSIS
.B stairs
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-wireframe]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-wireframe]
+[\-\-fps]
.SH DESCRIPTION
This draws an "infinite" staircase.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 20000 (0.02 seconds.).
.TP 8
-.B \-wireframe
+.B \-\-wireframe
Render in wireframe instead of solid.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
starwars \- draws a perspective text crawl, like at the beginning of the movie
.SH SYNOPSIS
.B starwars
-[\-display \fIhost:display.screen\fP] [\-window] [\-root]
-[\-visual \fIvisual\fP]
-[\-delay \fImicroseconds\fP]
-[\-program \fIcommand\fP]
-[\-size \fIinteger\fP ]
-[\-columns \fIinteger\fP]
-[\-wrap | \-no\-wrap]
-[\-left | \-center | \-right]
-[\-lines \fIinteger\fP]
-[\-spin \fIfloat\fP]
-[\-steps \fIinteger\fP]
-[\-delay \fIusecs\fP]
-[\-font \fIxlfd\fP]
-[\-no\-textures]
-[\-no\-smooth]
-[\-no\-thick]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-delay \fImicroseconds\fP]
+[\-\-program \fIcommand\fP]
+[\-\-size \fIinteger\fP ]
+[\-\-columns \fIinteger\fP]
+[\-\-wrap | \-\-no\-wrap]
+[\-\-left | \-\-center | \-\-right]
+[\-\-lines \fIinteger\fP]
+[\-\-spin \fIfloat\fP]
+[\-\-steps \fIinteger\fP]
+[\-\-delay \fIusecs\fP]
+[\-\-font \fIxlfd\fP]
+[\-\-no\-textures]
+[\-\-no\-smooth]
+[\-\-no\-thick]
+[\-\-fps]
.SH DESCRIPTION
The \fIstarwars\fP program runs another program to generate a stream of
text, then animates that text receeding into the background at an angle,
.I starwars
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-install
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP\fP
+.B \-\-visual \fIvisual\fP\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-program \fIsh-command\fP
+.B \-\-program \fIsh-command\fP
The command to run to generate the text to display. This option may be
any string acceptable to /bin/sh. The program will be run at the end of
a pipe, and any characters that it prints to \fIstdout\fP will be printed
.sp
.fi
.TP 8
-.B \-size \fIinteger\fP
+.B \-\-size \fIinteger\fP
How large a font to use, in points. (Well, in some arbitrary unit
we're calling "points" for the sake of argument.) Default: 24.
.TP 8
-.B \-columns \fIinteger\fP
+.B \-\-columns \fIinteger\fP
How many columns of text should be visible on the bottom line of the
screen. Default: 60.
-Only one of \fI\-columns\fP and \fI\-size\fP may be specified;
-if both are specified, \fI\-columns\fP takes priority.
+Only one of \fI\-\-columns\fP and \fI\-\-size\fP may be specified;
+if both are specified, \fI\-\-columns\fP takes priority.
.TP 8
-.B \-wrap
+.B \-\-wrap
Word-wrap lines when they reach the rightmost column. This is the default.
.TP 8
-.B \-no\-wrap
+.B \-\-no\-wrap
Do not word-wrap: just let the lines go off the right side of the screen.
.TP 8
-.B \-left | \-center | \-right
+.B \-\-left | \-\-center | \-\-right
Whether to align the text flush left, centered, or flush right.
The default is centered.
.TP 8
-.B \-lines \fIinteger\fP
+.B \-\-lines \fIinteger\fP
How many lines should be allowed to be on the screen before they fall off
the end. The default is 125.
.TP 8
-.B \-spin \fIfloat\fP
+.B \-\-spin \fIfloat\fP
The star field on the background slowly rotates. This is how fast.
The default is 0.03.
.TP 8
-.B \-steps \fIinteger\fP
+.B \-\-steps \fIinteger\fP
How many steps should be used to scroll a single line. The default is 35.
If the animation looks jerky to you, increase this number.
.TP 8
-.B \-delay \fIusecs\fP
+.B \-\-delay \fIusecs\fP
The delay between steps of the animation; default is 40000 (1/25th second.)
.TP 8
-.B \-font \fIfont-name\fP
+.B \-\-font \fIfont-name\fP
The name of the font to use. For best effect, this should be a large
font (at least 36 points.) The bigger the font, the better looking the
characters will be. Note that the size of this font affects only the
clarity of the characters, not their size on the screen: for that, use
-the \fI\-size\fP or \fI\-columns\fP options.
+the \fI\-\-size\fP or \fI\-\-columns\fP options.
Default: -*-utopia-bold-r-normal-*-*-720-*-*-*-*-iso8859-1
.TP 8
-.B \-no\-textures
+.B \-\-no\-textures
Instead of texture-mapping a real font to render the text, use a
built-in font composed of line segments. On graphics cards without
texture support, the line-segment font will have much better
performance.
.TP 8
-.B \-no\-smooth
+.B \-\-no\-smooth
When using the line-segment font, turn off anti-aliasing of the lines
used to draw the font. This will make the text blockier, but may
improve performance.
.TP 8
-.B \-no\-thick
+.B \-\-no\-thick
When using the line-segment font, turn off use of thick lines for the
characters that are close to the foreground. This will make the text
appear unnaturally skinny, but may improve performance.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR xscreensaver (1),
.BR xscreensaver\-text (MANSUFFIX),
stonerview \- 3D undulating ribbons of squares.
.SH SYNOPSIS
.B stonerview
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-wireframe]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-wireframe]
+[\-\-fps]
.SH DESCRIPTION
Chains of colorful squares dance around each other in complex spiral
patterns. This is a clone of the SGI "electropaint" screen saver.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-wireframe
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-wireframe
Render in wireframe instead of solid.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
superquadrics \- morphing 3d shapes.
.SH SYNOPSIS
.B superquadrics
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-spinspeed \fInumber\fP]
-[\-count \fInumber\fP]
-[\-cycles \fInumber\fP]
-[\-wireframe]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-spinspeed \fInumber\fP]
+[\-\-count \fInumber\fP]
+[\-\-cycles \fInumber\fP]
+[\-\-wireframe]
+[\-\-fps]
.SH DESCRIPTION
Ed Mackey reports that he wrote the first version of this program in BASIC
on a Commodore 64 in 1987, as a 320x200 black and white wireframe. Now it
is GL and has specular reflections.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 40000 (0.04 seconds.).
.TP 8
-.B \-spinspeed \fInumber\fP
+.B \-\-spinspeed \fInumber\fP
0.1 - 15.0. Default: 5.0.
.TP 8
-.B \-count \fInumber\fP
+.B \-\-count \fInumber\fP
0 - 100. Default: 25.
.TP 8
-.B \-cycles \fInumber\fP
+.B \-\-cycles \fInumber\fP
0 - 100. Default: 40.
.TP 8
-.B \-wireframe
+.B \-\-wireframe
Render in wireframe instead of solid.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
surfaces \- Draws some interesting 3d parametric surfaces.
.SH SYNOPSIS
.B surfaces
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-speed \fInumber\fP]
-[\-rand]
-[\-spin]
-[\-wander]
-[\-fps]
-[\-surface \fIsurface-name\fP]
-[\-random-surface]
-[\-dini]
-[\-enneper]
-[\-kuen]
-[\-moebius]
-[\-seashell]
-[\-swallowtail]
-[\-bohemian]
-[\-whitney]
-[\-pluecker]
-[\-henneberg]
-[\-catalan]
-[\-corkscrew]
-[\-mode \fIdisplay-mode\fP]
-[\-random-mode]
-[\-points]
-[\-lines]
-[\-line-loops]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-speed \fInumber\fP]
+[\-\-rand]
+[\-\-spin]
+[\-\-wander]
+[\-\-fps]
+[\-\-surface \fIsurface-name\fP]
+[\-\-random-surface]
+[\-\-dini]
+[\-\-enneper]
+[\-\-kuen]
+[\-\-moebius]
+[\-\-seashell]
+[\-\-swallowtail]
+[\-\-bohemian]
+[\-\-whitney]
+[\-\-pluecker]
+[\-\-henneberg]
+[\-\-catalan]
+[\-\-corkscrew]
+[\-\-mode \fIdisplay-mode\fP]
+[\-\-random-mode]
+[\-\-points]
+[\-\-lines]
+[\-\-line-loops]
.SH DESCRIPTION
This draws one of several three dimensional parametric surfaces.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual
class, or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 20000 (0.02 seconds.).
.TP 8
-.B \-speed \fInumber\fP
+.B \-\-speed \fInumber\fP
Number of frames before changing shape. Default: 1000.
.TP 8
-.B \-surface random \fP(Shortcut: \fB\-random-surface\fP)
+.B \-\-surface random \fP(Shortcut: \fB\-\-random-surface\fP)
Display a random surface. This is the default.
.TP 8
-.B \-surface dini \fP(Shortcut: \fB\-dini\fP)
+.B \-\-surface dini \fP(Shortcut: \fB\-\-dini\fP)
Display Dini's surface.
.TP 8
-.B \-surface enneper \fP(Shortcut: \fB\-enneper\fP)
+.B \-\-surface enneper \fP(Shortcut: \fB\-\-enneper\fP)
Display Enneper's minimal surface.
.TP 8
-.B \-surface kuen \fP(Shortcut: \fB\-kuen\fP)
+.B \-\-surface kuen \fP(Shortcut: \fB\-\-kuen\fP)
Display the Kuen surface.
.TP 8
-.B \-surface moebius \fP(Shortcut: \fB\-moebius\fP)
+.B \-\-surface moebius \fP(Shortcut: \fB\-\-moebius\fP)
Display the Moebius strip.
.TP 8
-.B \-surface seashell \fP(Shortcut: \fB\-seashell\fP)
+.B \-\-surface seashell \fP(Shortcut: \fB\-\-seashell\fP)
Display the seashell surface.
.TP 8
-.B \-surface swallowtail \fP(Shortcut: \fB\-swallowtail\fP)
+.B \-\-surface swallowtail \fP(Shortcut: \fB\-\-swallowtail\fP)
Display the swallowtail catastrophe.
.TP 8
-.B \-surface bohemian \fP(Shortcut: \fB\-bohemian\fP)
+.B \-\-surface bohemian \fP(Shortcut: \fB\-\-bohemian\fP)
Display the Bohemian dome.
.TP 8
-.B \-surface whitney \fP(Shortcut: \fB\-whitney\fP)
+.B \-\-surface whitney \fP(Shortcut: \fB\-\-whitney\fP)
Display the Whitney umbrella.
.TP 8
-.B \-surface pluecker \fP(Shortcut: \fB\-pluecker\fP)
+.B \-\-surface pluecker \fP(Shortcut: \fB\-\-pluecker\fP)
Display Pluecker's conoid.
.TP 8
-.B \-surface henneberg \fP(Shortcut: \fB\-henneberg\fP)
+.B \-\-surface henneberg \fP(Shortcut: \fB\-\-henneberg\fP)
Display Henneberg's minimal surface.
.TP 8
-.B \-surface catalan \fP(Shortcut: \fB\-catalan\fP)
+.B \-\-surface catalan \fP(Shortcut: \fB\-\-catalan\fP)
Display Catalan's minimal surface.
.TP 8
-.B \-surface corkscrew \fP(Shortcut: \fB\-corkscrew\fP)
+.B \-\-surface corkscrew \fP(Shortcut: \fB\-\-corkscrew\fP)
Display the corkscrew surface.
.TP 8
-.B \-mode random \fP(Shortcut: \fB\-random-mode\fP)
+.B \-\-mode random \fP(Shortcut: \fB\-\-random-mode\fP)
Use random OpenGL primitives to display the surface. This is the
default.
.TP 8
-.B \-mode points \fP(Shortcut: \fB\-points\fP)
+.B \-\-mode points \fP(Shortcut: \fB\-\-points\fP)
Use OpenGL points to display the surface.
.TP 8
-.B \-mode lines \fP(Shortcut: \fB\-lines\fP)
+.B \-\-mode lines \fP(Shortcut: \fB\-\-lines\fP)
Use OpenGL lines to display the surface.
.TP 8
-.B \-mode line-loops \fP(Shortcut: \fB\-line-loops\fP)
+.B \-\-mode line-loops \fP(Shortcut: \fB\-\-line-loops\fP)
Use OpenGL line loops to display the surface.
.TP 8
-.B \-wander | \-no-wander
+.B \-\-wander | \-\-no-wander
Whether to wander around the screen.
.TP 8
-.B \-spin | \-no-spin
+.B \-\-spin | \-\-no-spin
Whether to rotate around the center of the figure.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
tangram \- watch the computer solve tangram puzzles.
.SH SYNOPSIS
.B tangram
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-wireframe]
-[\-viewing_time \fInumber\fP]
-[\-rotate]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-wireframe]
+[\-\-viewing_time \fInumber\fP]
+[\-\-rotate]
+[\-\-fps]
.SH DESCRIPTION
The \fItangram\fP program uses a few basic shapes to build silhouettes of recognizable objects.
.SH OPTIONS
.I tangram
accepts the following options:
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 10000 (0.01 seconds.).
.TP 8
-.B \-wireframe | \-no-wireframe
+.B \-\-wireframe | \-\-no-wireframe
Render in wireframe instead of solid.
.TP 8
-.B \-viewing_time \fInumber\fP
+.B \-\-viewing_time \fInumber\fP
Specify the length of time, in seconds, that the finished puzzle
should be displayed. Default: 5
.TP 8
-.B \-rotate | \-no-rotate
+.B \-\-rotate | \-\-no-rotate
Rotate the camera around the puzzle.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
timetunnel \- Plasma tunnels fade in and out
.SH SYNOPSIS
.B timetunnel
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-start \fInumber\fP]
-[\-end \fInumber\fP]
-[\-dilate \fInumber\fP]
-[\-no-logo]
-[\-reverse]
-[\-no-fog]
-[\-no-texture]
-[\-wireframe]
-[\-fps]
-[\-tardis \fItexture\fP]
-[\-head \fItexture\fP]
-[\-marquee \fItexture\fP]
-[\-tun1 \fItexture\fP]
-[\-tun2 \fItexture\fP]
-[\-tun3 \fItexture\fP]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-start \fInumber\fP]
+[\-\-end \fInumber\fP]
+[\-\-dilate \fInumber\fP]
+[\-\-no-logo]
+[\-\-reverse]
+[\-\-no-fog]
+[\-\-no-texture]
+[\-\-wireframe]
+[\-\-fps]
+[\-\-tardis \fItexture\fP]
+[\-\-head \fItexture\fP]
+[\-\-marquee \fItexture\fP]
+[\-\-tun1 \fItexture\fP]
+[\-\-tun2 \fItexture\fP]
+[\-\-tun3 \fItexture\fP]
.SH DESCRIPTION
Draws an animation similar to the opening and closing effects on the
Dr. Who television show.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-start \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-start \fInumber\fP
Start time of loop, 0.0 - 30.00. Default 0.0. May be identical to end time.
.TP 8
-.B \-end \fInumber\fP
+.B \-\-end \fInumber\fP
End time of loop, 0.0 - 30.00. Default 27.79. May be identical to start time.
.TP 8
-.B \-dilate \fInumber\fP
+.B \-\-dilate \fInumber\fP
Scale time to speed or slow simulation. Numbers less than one slow it down.
.TP 8
-.B \-no-logo
+.B \-\-no-logo
Show only tunnels, no logos, etc.
.TP 8
-.B \-reverse
+.B \-\-reverse
Play in reverse, including tunnels.
.TP 8
-.B \-no-fog
+.B \-\-no-fog
Turn off fog.
.TP 8
-.B \-no-texture
+.B \-\-no-texture
Turn off textures.
.TP 8
-.B \-wireframe
+.B \-\-wireframe
Show as wire frame.
.TP 8
-.B \-fps | \-no-fps
+.B \-\-fps | \-\-no-fps
Whether to show a frames-per-second display at the bottom of the screen.
.TP 8
-.B \-tardis \fItexture\fP
+.B \-\-tardis \fItexture\fP
Specify an xpm file to override default tardis texture.
.TP 8
-.B \-head \fItexture\fP
+.B \-\-head \fItexture\fP
Specify an xpm file to override default Dr. Who head texture.
.TP 8
-.B \-marquee \fItexture\fP
+.B \-\-marquee \fItexture\fP
Specify an xpm file to override default show marquee texture.
.TP 8
-.B \-tun1 \fItexture\fP
+.B \-\-tun1 \fItexture\fP
Specify an xpm file to override default tardis tunnel texture.
.TP 8
-.B \-tun2 \fItexture\fP
+.B \-\-tun2 \fItexture\fP
Specify an xpm file to override default middle tunnel texture.
.TP 8
-.B \-tun3 \fItexture\fP
+.B \-\-tun3 \fItexture\fP
Specify an xpm file to override default final tunnel texture.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
topblock \- a 3D world of falling blocks that build up and up.
.SH SYNOPSIS
.B topblock
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-wireframe]
-[\-fps]
-[\-size \fInumber\fP]
-[\-spawn \fInumber\fP]
-[\-camX \fInumber\fP]
-[\-camY \fInumber\fP]
-[\-camZ \fInumber\fP]
-[\-rotate]
-[\-no-carpet]
-[\-no-nipples]
-[\-blob]
-[\-rotateSpeed \fInumber\fP]
-[\-follow]
-[\-maxFalling \fInumber\fP]
-[\-resolution \fInumber\fP]
-[\-maxColors \fInumber\fP]
-[\-dropSpeed \fInumber\fP]
-[\-override]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-wireframe]
+[\-\-fps]
+[\-\-size \fInumber\fP]
+[\-\-spawn \fInumber\fP]
+[\-\-camX \fInumber\fP]
+[\-\-camY \fInumber\fP]
+[\-\-camZ \fInumber\fP]
+[\-\-rotate]
+[\-\-no-carpet]
+[\-\-no-nipples]
+[\-\-blob]
+[\-\-rotateSpeed \fInumber\fP]
+[\-\-follow]
+[\-\-maxFalling \fInumber\fP]
+[\-\-resolution \fInumber\fP]
+[\-\-maxColors \fInumber\fP]
+[\-\-dropSpeed \fInumber\fP]
+[\-\-override]
.SH DESCRIPTION
Creates a world of falling blocks that build up and up.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 10000 (0.01 seconds.).
.TP 8
-.B \-wireframe | \-no-wireframe
+.B \-\-wireframe | \-\-no-wireframe
Render in wireframe instead of solid.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.TP 8
-.B \-size \fInumber\fP
+.B \-\-size \fInumber\fP
Size of the base/carpet.
.TP 8
-.B \-spawn \fInumber\fP
+.B \-\-spawn \fInumber\fP
Likeyhood of a new block being created per frame : 1 high, 1000 very low.
.TP 8
-.B \-camX \fInumber\fP
+.B \-\-camX \fInumber\fP
Initial camera X location in the world.
.TP 8
-.B \-camY \fInumber\fP
+.B \-\-camY \fInumber\fP
Initial camera Y location in the world.
.TP 8
-.B \-camZ \fInumber\fP
+.B \-\-camZ \fInumber\fP
Initial camera Z location in the world.
.TP 8
-.B \-rotate | -no-rotate
+.B \-\-rotate | -no-rotate
Add/Remove rotation to/from the animation.
.TP 8
-.B \-no-carpet
+.B \-\-no-carpet
Remove the base/carpet.
.TP 8
-.B \-no-nipples
+.B \-\-no-nipples
Remove nipples on the blocks (also applies to udders) (has no effect in blob mode).
.TP 8
-.B \-blob
+.B \-\-blob
Run in blob mode, blocks become over sized spheres.
.TP 8
-.B \-rotateSpeed \fInumber\fP
+.B \-\-rotateSpeed \fInumber\fP
Varries speed of world rotation.
.TP 8
-.B \-follow
+.B \-\-follow
Camera follows blocks as they fall instead of camera being semi static (stays with top block).
.TP 8
-.B \-maxFalling \fInumber\fP
+.B \-\-maxFalling \fInumber\fP
Maximum number of objects created before recycling occurs.
.TP 8
-.B \-resolution \fInumber\fP
+.B \-\-resolution \fInumber\fP
Resolution of tubes, disks and spheres.
.TP 8
-.B \-maxColors \fInumber\fP
+.B \-\-maxColors \fInumber\fP
Number of different colors available to falling objects.
.TP 8
-.B \-dropSpeed \fInumber\fP
+.B \-\-dropSpeed \fInumber\fP
Varries speed of falling objects.
.TP 8
-.B \-override
+.B \-\-override
Overrides camera settings and provides a tunnel view.
.SH KEYS
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1),
* over-written with the resulting new total rotation).
*/
void
-add_quats(float *q1, float *q2, float *dest);
+add_quats(float q1[4], float q2[4], float dest[4]);
/*
* A useful function, builds a rotation matrix in Matrix based on
tronbit \- Yes. Yes. No. Yes. Yes. No. Yes. Yes yes yes yes yes.
.SH SYNOPSIS
.B tronbit
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-speed \fIratio\fP]
-[\-spin]
-[\-wander]
-[\-wireframe]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-speed \fIratio\fP]
+[\-\-spin]
+[\-\-wander]
+[\-\-wireframe]
+[\-\-fps]
.SH DESCRIPTION
Draws an animation of the character "Bit" from the film, \fITron\fP.
a dodecahedron.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 30000 (0.03 seconds.).
.TP 8
-.B \-speed \fInumber\fP
+.B \-\-speed \fInumber\fP
How fast the animation should run.
Less than 1 for slower, greater than 1 for faster.
.TP 8
-.B \-no\-spin
+.B \-\-no\-spin
Don't rotate.
.TP 8
-.B \-no\-wander
+.B \-\-no\-wander
Don't wander around.
.TP 8
-.B \-wireframe
+.B \-\-wireframe
Render in wireframe instead of solid.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR polyhedra (1),
unicrud \- Bounces a random Unicode character on the screen.
.SH SYNOPSIS
.B unicrud
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-speed \fInumber\fP]
-[\-block \fIstring\fP]
-[\-no-titles]
-[\-no-wander]
-[\-no-roll]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-speed \fInumber\fP]
+[\-\-block \fIstring\fP]
+[\-\-no-titles]
+[\-\-no-wander]
+[\-\-no-roll]
+[\-\-fps]
.SH DESCRIPTION
Chooses a random Unicode character and displays it full screen, along with
some information about it.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 20000 (0.02 seconds).
.TP 8
-.B \-speed \fInumber\fP
+.B \-\-speed \fInumber\fP
Animation speed. 2.0 means twice as fast, 0.5 means half as fast.
.TP 8
-.B \-titles | \-no-titles
+.B \-\-titles | \-\-no-titles
Whether to describe the character being shown. Default true.
.TP 8
-.B \-wander | \-no-wander
+.B \-\-wander | \-\-no-wander
Whether the object should wander around the screen.
.TP 8
-.B \-roll | \-no-roll
+.B \-\-roll | \-\-no-roll
Whether the object should rotate. Boolean.
.TP 8
-.B \-block \fIstring\fP
+.B \-\-block \fIstring\fP
Which block or blocks of Unicode characters to display. Default: "all".
-Use \fI\-block help\fP to see the full list.
+Use \fI\-\-block help\fP to see the full list.
.TP 8
-.B \-fps | \-no-fps
+.B \-\-fps | \-\-no-fps
Whether to show a frames-per-second display at the bottom of the screen.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
https://en.wikipedia.org/wiki/Unicode,
.br
unknownpleasures \- a waterfall graph of the signal from pulsar PSR B1919+21.
.SH SYNOPSIS
.B unknownpleasures
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-count \fInumber\fP]
-[\-speed \fInumber\fP]
-[\-resolution \fInumber\fP]
-[\-amplitude \fInumber\fP]
-[\-noise \fInumber\fP]
-[\-mask \fIfile\fP]
-[\-no-ortho]
-[\-buzz]
-[\-wireframe]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-count \fInumber\fP]
+[\-\-speed \fInumber\fP]
+[\-\-resolution \fInumber\fP]
+[\-\-amplitude \fInumber\fP]
+[\-\-noise \fInumber\fP]
+[\-\-mask \fIfile\fP]
+[\-\-no-ortho]
+[\-\-buzz]
+[\-\-wireframe]
+[\-\-fps]
.SH DESCRIPTION
PSR B1919+21 (AKA CP 1919) was the first pulsar ever discovered: a spinning
neutron star emitting a periodic lighthouse-like beacon. An illustration of
Pleasures".
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 30000 (0.03 seconds).
.TP 8
-.B \-speed \fInumber\fP
+.B \-\-speed \fInumber\fP
Animation speed. 2 for twice as fast, 0.5 for half as fast.
.TP 8
-.B \-count \fInumber\fP
+.B \-\-count \fInumber\fP
Scanlines (vertical resolution). Default: 80.
.TP 8
-.B \-resolution \fInumber\fP
+.B \-\-resolution \fInumber\fP
Horizontal Resolution, Default: 100.
.TP 8
-.B \-amplitude \fInumber\fP
+.B \-\-amplitude \fInumber\fP
Height of the waves, 0 - 1.0. Default: 0.13.
.TP 8
-.B \-noise \fInumber\fP
+.B \-\-noise \fInumber\fP
How noisy the signal is. 2 for twice as noisy, 0.5 for half as noisy.
.TP 8
-.B \-mask \fIfile\fP
+.B \-\-mask \fIfile\fP
Use the given image file as a clipping mask against the data.
A high contrast image of around 256x256 works best.
Signal peaks appear in the dark areas.
.TP 8
-.B \-ortho | \-no-ortho
+.B \-\-ortho | \-\-no-ortho
Whether to use an orthographic projection.
.TP 8
-.B \-buzz | \-no-buzz
+.B \-\-buzz | \-\-no-buzz
Whether each line should seethe with noise.
.TP 8
-.B \-wireframe | \-no-wireframe
+.B \-\-wireframe | \-\-no-wireframe
Render in wireframe instead of solid.
.TP 8
-.B \-fps | \-no-fps
+.B \-\-fps | \-\-no-fps
Whether to show a frames-per-second display at the bottom of the screen.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
vigilance \- screen saver.
.SH SYNOPSIS
.B vigilance
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-speed \fInumber\fP]
-[\-count \fInumber\fP]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-speed \fInumber\fP]
+[\-\-count \fInumber\fP]
.SH DESCRIPTION
A set of security cameras keep very careful track of their surroundings.
You can trust them. Everything is completely under control.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 20000 (0.02 seconds).
.TP 8
-.B \-speed \fInumber\fP
+.B \-\-speed \fInumber\fP
Animation speed. 2.0 means twice as fast, 0.5 means half as fast.
.TP 8
-.B \-count \fInumber\fP
+.B \-\-count \fInumber\fP
Number of cameras. 1 - 50. Default: 5.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
voronoi \- draws a randomly-colored Voronoi tessellation
.SH SYNOPSIS
.B voronoi
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-points \fIint\fP]
-[\-point\-size \fIint\fP]
-[\-point\-speed \fIratio\fP]
-[\-point\-delay \fIseconds\fP]
-[\-zoom\-speed \fIratio\fP]
-[\-zoom\-delay \fIseconds\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-points \fIint\fP]
+[\-\-point\-size \fIint\fP]
+[\-\-point\-speed \fIratio\fP]
+[\-\-point\-delay \fIseconds\fP]
+[\-\-zoom\-speed \fIratio\fP]
+[\-\-zoom\-delay \fIseconds\fP]
+[\-\-fps]
.SH DESCRIPTION
Draws a randomly-colored Voronoi tessellation, and periodically zooms
in and adds new points. The existing points also wander around.
cones in an orthographic plane.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-points \fIint\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-points \fIint\fP
How many points to add each time we zoom in.
.TP 8
-.B \-point\-size \fIint\fP
+.B \-\-point\-size \fIint\fP
How big to draw the stars, in pixels. 0 for no stars.
.TP 8
-.B \-point\-speed \fIratio\fP
+.B \-\-point\-speed \fIratio\fP
How fast the points should wander.
Less than 1 for slower, greater than 1 for faster.
.TP 8
-.B \-point\-delay \fIseconds\fP
+.B \-\-point\-delay \fIseconds\fP
How quickly to insert new points, when adding.
.TP 8
-.B \-zoom\-speed \fIratio\fP
+.B \-\-zoom\-speed \fIratio\fP
How fast to zoom in.
Less than 1 for slower, greater than 1 for faster.
.TP 8
-.B \-zoom\-delay \fIseconds\fP
+.B \-\-zoom\-delay \fIseconds\fP
Zoom in every this-many seconds.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate, CPU load, and polygon count.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
winduprobot \- screen saver.
.SH SYNOPSIS
.B winduprobot
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-count \fInumber\fP]
-[\-speed \fIratio\fP]
-[\-size \fIratio\fP]
-[\-opacity \fIratio\fP]
-[\-talk \fIratio\fP]
-[\-no-texture]
-[\-no-fade]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-count \fInumber\fP]
+[\-\-speed \fIratio\fP]
+[\-\-size \fIratio\fP]
+[\-\-opacity \fIratio\fP]
+[\-\-talk \fIratio\fP]
+[\-\-no-texture]
+[\-\-no-fade]
+[\-\-fps]
.SH DESCRIPTION
A swarm of wind-up toy robots wander around the table-top, bumping into
each other. Each robot contains a mechanically accurate gear system inside,
transparency.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 20000 (0.02 seconds).
.TP 8
-.B \-count \fInumber\fP
+.B \-\-count \fInumber\fP
Number of robots. 1 - 100. Default: 25.
.TP 8
-.B \-speed \fIratio\fP
+.B \-\-speed \fIratio\fP
Animation speed. 2.0 means twice as fast, 0.5 means half as fast.
.TP 8
-.B \-size \fIratio\fP
+.B \-\-size \fIratio\fP
Robot size. 2.0 means twice as big, 0.5 means half as big.
.TP 8
-.B \-opacity \fIratio\fP
+.B \-\-opacity \fIratio\fP
Robot skin transparency. 0.0 - 1.0. Default: 1.0.
.TP 8
-.B \-talk \fIratio\fP
+.B \-\-talk \fIratio\fP
How often to occasionally pop up a word bubble with random text in it.
0.0 means never. 1.0 means often.
.TP 8
-.B \-texture | \-no-texture
+.B \-\-texture | \-\-no-texture
Whether the robot's surface should be reflective chrome.
.TP 8
-.B \-fade | \-no-fade
+.B \-\-fade | \-\-no-fade
Whether to sometimes fade the robot's opacity to show the inner mechanism.
.TP 8
-.B \-fps | \-no-fps
+.B \-\-fps | \-\-no-fps
Whether to show a frames-per-second display at the bottom of the screen.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
xscreensaver-gl-visual \- figure out which X visual to use for GL programs
.SH SYNOPSIS
.B xscreensaver-gl-visual
-[\-display \fIhost:display.screen\fP]
+[\-\-display \fIhost:display.screen\fP]
.SH DESCRIPTION
This program prints the ID of the visual that should be used for proper
operation of OpenGL programs. This program only exists so that the
goop \- squishy transparent oil and bubble screenhack
.SH SYNOPSIS
.B goop
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-transparent] [\-non\-transparent] [\-additive] [\-subtractive] [\-xor] [\-no\-xor]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP] [\-\-foreground \fIcolor\fP]
+[\-\-background \fIcolor\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-mono] [\-\-install] [\-\-visual \fIvisual\fP] [\-\-transparent] [\-\-non\-transparent] [\-\-additive] [\-\-subtractive] [\-\-xor] [\-\-no\-xor]
+[\-\-fps]
.SH DESCRIPTION
The \fIgoop\fP program draws a simulation of bubbles in layers of
overlapping multicolored translucent fluid.
.I goop
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-mono
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-mono
If on a color display, pretend we're on a monochrome display.
.TP 8
-.B \-install
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-count \fIinteger\fP
+.B \-\-count \fIinteger\fP
How many bubbles to draw per layer. Default: random.
.TP 8
-.B \-planes \fIinteger\fP
+.B \-\-planes \fIinteger\fP
How many planes to draw. Default: random, based on screen depth.
.TP 8
-.B \-delay \fImicroseconds\fP
+.B \-\-delay \fImicroseconds\fP
How much of a delay should be introduced between steps of the animation.
Default 12000, or about 0.012 seconds.
.TP 8
-.B \-transparent
-If \fI\-layers\fP is greater than 1, then each layer will be drawn in one
+.B \-\-transparent
+If \fI\-\-layers\fP is greater than 1, then each layer will be drawn in one
color, and when they overlap, the colors will be mixed. This is the default.
.TP 8
-.B \-non\-transparent
-Turns off \fI\-transparent\fP.
+.B \-\-non\-transparent
+Turns off \fI\-\-transparent\fP.
.TP 8
-.B \-additive
-If \fI\-transparent\fP is specified, then this option means that the colors
+.B \-\-additive
+If \fI\-\-transparent\fP is specified, then this option means that the colors
will be mixed using an additive color model, as if the blobs were projected
light. This is the default.
.TP 8
-.B \-subtractive
-If \fI\-transparent\fP is specified, then this option means that the
+.B \-\-subtractive
+If \fI\-\-transparent\fP is specified, then this option means that the
colors will be mixed using a subtractive color model, as if the blobs were
translucent filters.
.TP 8
-.B \-xor
+.B \-\-xor
Draw with xor instead of the other color tricks.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
grav \- draws a simple orbital simulation
.SH SYNOPSIS
.B grav
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP] [\-delay \fImicroseconds\fP] [\-count \fIinteger\fP] [\-decay] [\-no\-decay] [\-trail] [\-no\-trail]
+[\-\-display \fIhost:display.screen\fP] [\-\-foreground \fIcolor\fP]
+[\-\-background \fIcolor\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-mono] [\-\-install] [\-\-visual \fIvisual\fP] [\-\-ncolors \fIinteger\fP] [\-\-delay \fImicroseconds\fP] [\-\-count \fIinteger\fP] [\-\-decay] [\-\-no\-decay] [\-\-trail] [\-\-no\-trail]
-[\-fps]
+[\-\-fps]
.SH DESCRIPTION
The \fIgrav\fP program draws a simple orbital simulation
.SH OPTIONS
.I grav
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-mono
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-mono
If on a color display, pretend we're on a monochrome display.
.TP 8
-.B \-install
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-ncolors \fIinteger\fP
+.B \-\-ncolors \fIinteger\fP
How many colors should be used (if possible). Default 64.
The colors are chosen randomly.
.TP 8
-.B \-count \fIinteger\fP
+.B \-\-count \fIinteger\fP
Default 12.
.TP 8
-.B \-decay
+.B \-\-decay
.TP 8
-.B \-no\-decay
+.B \-\-no\-decay
Whether orbits should decay.
.TP 8
-.B \-trail
+.B \-\-trail
.TP 8
-.B \-no\-trail
+.B \-\-no\-trail
Whether the objects should leave trails behind them (makes it look vaguely
like a cloud-chamber.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1),
greynetic \- draw random stippled/color rectangles
.SH SYNOPSIS
.B greynetic
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-delay \fIusecs\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP] [\-\-foreground \fIcolor\fP]
+[\-\-background \fIcolor\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-mono] [\-\-install] [\-\-visual \fIvisual\fP] [\-\-delay \fIusecs\fP]
+[\-\-fps]
.SH DESCRIPTION
The \fIgreynetic\fP program draws random rectangles.
.SH OPTIONS
.I greynetic
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-mono
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-mono
If on a color display, pretend we're on a monochrome display.
.TP 8
-.B \-install
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-delay \fImicroseconds\fP
+.B \-\-delay \fImicroseconds\fP
Slow it down.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
halftone \- simple halftone pattern of moving mass points
.SH SYNOPSIS
.B halftone
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-count \fInumber\fP]
-[\-spacing \fInumber\fP]
-[\-sizefactor \fInumber\fP]
-[\-delay \fInumber\fP]
-[\-minmass \fInumber\fP]
-[\-maxmass \fInumber\fP]
-[\-minspeed \fInumber\fP]
-[\-maxspeed \fInumber\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-count \fInumber\fP]
+[\-\-spacing \fInumber\fP]
+[\-\-sizefactor \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-minmass \fInumber\fP]
+[\-\-maxmass \fInumber\fP]
+[\-\-minspeed \fInumber\fP]
+[\-\-maxspeed \fInumber\fP]
+[\-\-fps]
.SH DESCRIPTION
Draws the gravity force in each point on the screen seen through a
halftone dot pattern. The gravity force is calculated from a set of
moving mass points. View it from a distance for best effect.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-count \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-count \fInumber\fP
How many mass points to move around. Default: 10
.TP 8
-.B \-spacing \fInumber\fP
+.B \-\-spacing \fInumber\fP
Distance between each halftone dot. Default: 14
.TP 8
-.B \-sizefactor \fInumber\fP
+.B \-\-sizefactor \fInumber\fP
How big each halftone dot should be drawn compared to the spacing value. Default: 1.5
.TP 8
-.B \-minmass \fInumber\fP
+.B \-\-minmass \fInumber\fP
The minimum mass of each mass point. Default: 0.001
.TP 8
-.B \-maxmass \fInumber\fP
+.B \-\-maxmass \fInumber\fP
The maximum mass of each mass point. Default: 0.02
.TP 8
-.B \-minspeed \fInumber\fP
+.B \-\-minspeed \fInumber\fP
The minimum speed of each mass point. Default: 0.001
.TP 8
-.B \-maxspeed \fInumber\fP
+.B \-\-maxspeed \fInumber\fP
The maximum speed of each mass point. Default: 0.02
-.B \-delay \fInumber\fP
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 10000
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
halo \- draw circular patterns
.SH SYNOPSIS
.B halo
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-count \fIint\fP] [\-delay \fIusecs\fP] [\-mode seuss | ramp | random ] [\-animate] [\-colors \fIinteger\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP] [\-\-foreground \fIcolor\fP]
+[\-\-background \fIcolor\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-mono] [\-\-install] [\-\-visual \fIvisual\fP] [\-\-count \fIint\fP] [\-\-delay \fIusecs\fP] [\-\-mode seuss | ramp | random ] [\-\-animate] [\-\-colors \fIinteger\fP]
+[\-\-fps]
.SH DESCRIPTION
The \fIhalo\fP program draws cool patterns based on circles.
.SH OPTIONS
.I halo
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-mono
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-mono
If on a color display, pretend we're on a monochrome display.
.TP 8
-.B \-install
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-count \fIinteger\fP
+.B \-\-count \fIinteger\fP
How many circles to draw. Default 0, meaning random.
.TP 8
-.B \-mode "seuss | ramp | random"
+.B \-\-mode "seuss | ramp | random"
In \fIseuss\fP mode, alternating striped curves will be drawn.
In \fIramp\fP mode, a color ramp will be drawn.
\fIrandom\fP means pick the mode randomly.
.TP 8
-.B \-delay \fImicroseconds\fP
+.B \-\-delay \fImicroseconds\fP
How much of a delay should be introduced between steps of the animation.
Default 100000, or about 0.1 second.
.TP 8
-.B \-colors \fIinteger\fP
+.B \-\-colors \fIinteger\fP
How many colors to use. Default 100.
.TP 8
-.B \-animate
+.B \-\-animate
If specified, then the centerpoints of the circles will bounce around.
Otherwise, the circles will be drawn once, erased, and a new set of
circles will be drawn.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
helix \- draw helical string-art patterns
.SH SYNOPSIS
.B helix
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-erase\-speed \fIusecs\fP] [\-erase\-mode \fIinteger\fP] [\-delay \fIseconds\fP] [\-install] [\-visual \fIvisual\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP] [\-\-foreground \fIcolor\fP]
+[\-\-background \fIcolor\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-mono] [\-\-erase\-speed \fIusecs\fP] [\-\-erase\-mode \fIinteger\fP] [\-\-delay \fIseconds\fP] [\-\-install] [\-\-visual \fIvisual\fP]
+[\-\-fps]
.SH DESCRIPTION
The \fIhelix\fP program draws interesting patterns composed of line segments
in random colors.
.I helix
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-mono
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-mono
If on a color display, pretend we're on a monochrome display.
.TP 8
-.B \-delay \fIseconds\fP
+.B \-\-delay \fIseconds\fP
This sets the number of seconds that the helix will be on the screen.
.TP 8
-.B \-subdelay \fImicroseconds\fP
+.B \-\-subdelay \fImicroseconds\fP
This sets the amount of time to pause periodically while drawing.
.TP 8
-.B \-install
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
hexadrop \- shrinking hexagons.
.SH SYNOPSIS
.B hexadrop
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-speed \fInumber\fP]
-[\-size \fInumber\fP]
-[\-sides \fInumber\fP]
-[\-uniform-speed]
-[\-no-uniform-speed]
-[\-lockstep]
-[\-no-lockstep]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-speed \fInumber\fP]
+[\-\-size \fInumber\fP]
+[\-\-sides \fInumber\fP]
+[\-\-uniform-speed]
+[\-\-no-uniform-speed]
+[\-\-lockstep]
+[\-\-no-lockstep]
+[\-\-fps]
.SH DESCRIPTION
Draws a grid of hexagons or other shapes and drops them out.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 30000 (0.03 seconds.).
.TP 8
-.B \-speed \fInumber\fP
+.B \-\-speed \fInumber\fP
Speed. 0.5 for half as fast; 2.0 for twice as fast.
.TP 8
-.B \-size \fInumber\fP
+.B \-\-size \fInumber\fP
How many tiles to fit horizontally on the screen. Default 15.
.TP 8
-.B \-sides \fInumber\fP
+.B \-\-sides \fInumber\fP
Shape of the tiles. 3, 4, 6 or 8. Default: random.
.TP 8
-.B \-uniform-speed | \-no-uniform-speed
+.B \-\-uniform-speed | \-\-no-uniform-speed
Whether each tile should drop at the same speed. Default: random.
.TP 8
-.B \-lockstep | \-no-lockstep
+.B \-\-lockstep | \-\-no-lockstep
Whether each tile should drop at the same time. Default: random.
.TP 8
-.B \-fps | \-no-fps
+.B \-\-fps | \-\-no-fps
Whether to show a frames-per-second display at the bottom of the screen.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
hopalong \- draw real plane fractals
.SH SYNOPSIS
.B hopalong
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP] [\-delay \fImicroseconds\fP] [\-cycles \fIinteger\fP] [\-count \fIinteger\fP] [\-jong] [\-no\-jong] [\-jong] [\-no\-sine]
+[\-\-display \fIhost:display.screen\fP] [\-\-foreground \fIcolor\fP]
+[\-\-background \fIcolor\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-mono] [\-\-install] [\-\-visual \fIvisual\fP] [\-\-ncolors \fIinteger\fP] [\-\-delay \fImicroseconds\fP] [\-\-cycles \fIinteger\fP] [\-\-count \fIinteger\fP] [\-\-jong] [\-\-no\-jong] [\-\-jong] [\-\-no\-sine]
-[\-fps]
+[\-\-fps]
.SH DESCRIPTION
The \fIhop\fP program generates real plane fractals as described in
the September 1986 issue of Scientific American.
.I hopalong
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-mono
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-mono
If on a color display, pretend we're on a monochrome display.
.TP 8
-.B \-install
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-ncolors \fIinteger\fP
+.B \-\-ncolors \fIinteger\fP
How many colors should be used (if possible). Default 200.
The colors used cycle through the hue, making N stops around
the color wheel.
.TP 8
-.B \-cycles \fIinteger\fP
+.B \-\-cycles \fIinteger\fP
How long to run each batch. Default 2500 pixels.
.TP 8
-.B \-count \fIinteger\fP
+.B \-\-count \fIinteger\fP
How many pixels should be drawn before a color change. Default 1000.
.TP 8
-.B \-jong \fIinteger\fP
+.B \-\-jong \fIinteger\fP
.TP 8
-.B \-no\-jong \fIinteger\fP
+.B \-\-no\-jong \fIinteger\fP
Whether to use the Jong format (default is to choose randomly.)
.TP 8
-.B \-sine \fIinteger\fP
+.B \-\-sine \fIinteger\fP
.TP 8
-.B \-no\-sine \fIinteger\fP
+.B \-\-no\-sine \fIinteger\fP
Whether to use the Sine format (default is to choose randomly.)
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1),
hyperball \- 2d projection of a 4d object
.SH SYNOPSIS
.B hyperball
-[\-display \fIhost:display.screen\fP]
-[\-foreground \fIcolor\fP]
-[\-background \fIcolor\fP]
-[\-xy \fIfloat\fP]
-[\-xz \fIfloat\fP]
-[\-yz \fIfloat\fP]
-[\-xw \fIfloat\fP]
-[\-yw \fIfloat\fP]
-[\-zw \fIfloat\fP]
-[\-delay \fIusecs\fP]
-[\-window]
-[\-root]
-[\-mono]
-[\-install]
-[\-visual \fIvisual\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-foreground \fIcolor\fP]
+[\-\-background \fIcolor\fP]
+[\-\-xy \fIfloat\fP]
+[\-\-xz \fIfloat\fP]
+[\-\-yz \fIfloat\fP]
+[\-\-xw \fIfloat\fP]
+[\-\-yw \fIfloat\fP]
+[\-\-zw \fIfloat\fP]
+[\-\-delay \fIusecs\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-mono]
+[\-\-install]
+[\-\-visual \fIvisual\fP]
+[\-\-fps]
.SH DESCRIPTION
The \fIhyperball\fP program displays a wireframe projection of a hyperball
which is rotating at user-specified rates around any or all of its four axes.
.I hyperball
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-mono
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-mono
If on a color display, pretend we're on a monochrome display.
.TP 8
-.B \-install
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-delay \fImicroseconds\fP
+.B \-\-delay \fImicroseconds\fP
How much of a delay should be introduced between steps of the animation.
Default 20000, or about 0.02 seconds.
.TP 8
-.B \-xw \fIfloat\fP
+.B \-\-xw \fIfloat\fP
.TP 8
-.B \-xy \fIfloat\fP
+.B \-\-xy \fIfloat\fP
.TP 8
-.B \-xz \fIfloat\fP
+.B \-\-xz \fIfloat\fP
.TP 8
-.B \-yw \fIfloat\fP
+.B \-\-yw \fIfloat\fP
.TP 8
-.B \-yz \fIfloat\fP
+.B \-\-yz \fIfloat\fP
.TP 8
-.B \-zw \fIfloat\fP
+.B \-\-zw \fIfloat\fP
The amount that the ball should be rotated around the specified axis at
each frame of the animation, expressed in 0.001 radians. These should be small
floating-point values (less than 50 works best.) Default: xy=3,
xz=5, yw=10.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
hypercube \- 2d projection of a 4d object
.SH SYNOPSIS
.B hypercube
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-color[0-7] \fIcolor\fP] [\-xy \fIfloat\fP] [\-xz \fIfloat\fP] [\-yz \fIfloat\fP] [\-xw \fIfloat\fP] [\-yw \fIfloat\fP] [\-zw \fIfloat\fP] [\-observer-z \fIint\fP] [\-delay \fIusecs\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP] [\-\-foreground \fIcolor\fP]
+[\-\-background \fIcolor\fP] [\-\-color[0-7] \fIcolor\fP] [\-\-xy \fIfloat\fP]
+[\-\-xz \fIfloat\fP] [\-\-yz \fIfloat\fP] [\-\-xw \fIfloat\fP] [\-\-yw
+\fIfloat\fP] [\-\-zw \fIfloat\fP] [\-\-observer-z \fIint\fP] [\-\-delay
+\fIusecs\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-mono] [\-\-install] [\-\-visual \fIvisual\fP]
+[\-\-fps]
.SH DESCRIPTION
The \fIhypercube\fP program displays a wireframe projection of a hypercube
which is rotating at user-specified rates around any or all of its four axes.
.I hypercube
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-mono
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-mono
If on a color display, pretend we're on a monochrome display.
.TP 8
-.B \-install
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-delay \fImicroseconds\fP
+.B \-\-delay \fImicroseconds\fP
How much of a delay should be introduced between steps of the animation.
Default 100000, or about 1/10th second.
.TP 8
-.B \-observer-z \fIint\fP
+.B \-\-observer-z \fIint\fP
How far away the observer is from the center of the cube (the cube is one
unit per side.) Default 5.
.TP 8
-.B \-color0 \fIcolor\fP
+.B \-\-color0 \fIcolor\fP
.TP 8
-.B \-color1 \fIcolor\fP
+.B \-\-color1 \fIcolor\fP
.TP 8
-.B \-color2 \fIcolor\fP
+.B \-\-color2 \fIcolor\fP
.TP 8
-.B \-color3 \fIcolor\fP
+.B \-\-color3 \fIcolor\fP
.TP 8
-.B \-color4 \fIcolor\fP
+.B \-\-color4 \fIcolor\fP
.TP 8
-.B \-color5 \fIcolor\fP
+.B \-\-color5 \fIcolor\fP
.TP 8
-.B \-color6 \fIcolor\fP
+.B \-\-color6 \fIcolor\fP
.TP 8
-.B \-color7 \fIcolor\fP
+.B \-\-color7 \fIcolor\fP
The colors used to draw the line segments bordering the eight faces of
the cube. Some of the faces have only two of their border-lines drawn in
the specified color, and some have all four.
.TP 8
-.B \-xw \fIfloat\fP
+.B \-\-xw \fIfloat\fP
.TP 8
-.B \-xy \fIfloat\fP
+.B \-\-xy \fIfloat\fP
.TP 8
-.B \-xz \fIfloat\fP
+.B \-\-xz \fIfloat\fP
.TP 8
-.B \-yw \fIfloat\fP
+.B \-\-yw \fIfloat\fP
.TP 8
-.B \-yz \fIfloat\fP
+.B \-\-yz \fIfloat\fP
.TP 8
-.B \-zw \fIfloat\fP
+.B \-\-zw \fIfloat\fP
The amount that the cube should be rotated around the specified axis at
each frame of the animation, expressed in 0.001 radians. These should be small
floating-point values (less than 50 works best.) Default: xy=3,
xz=5, yw=10.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
ifs \- draws spinning, colliding iterated-function-system images
.SH SYNOPSIS
.B ifs
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-no\-db]
-[\-delay \fInumber\fP]
-[\-detail \fInumber\fP]
-[\-colors \fInumber\fP]
-[\-functions \fInumber\fP]
-[\-iterate | \-recurse]
-[\-no\-rotate]
-[\-no\-scale]
-[\-no\-translate]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-no\-db]
+[\-\-delay \fInumber\fP]
+[\-\-detail \fInumber\fP]
+[\-\-colors \fInumber\fP]
+[\-\-functions \fInumber\fP]
+[\-\-iterate | \-\-recurse]
+[\-\-no\-rotate]
+[\-\-no\-scale]
+[\-\-no\-translate]
+[\-\-fps]
.SH DESCRIPTION
The \fIifs\fP program draws spinning, colliding iterated-function-system images.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-no\-db
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-no\-db
Disable double-buffering.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 20000
.TP 8
-.B \-colors \fInumber\fP
+.B \-\-colors \fInumber\fP
Number of colours to use. Default: 200
.TP 8
-.B \-detail \fInumber\fP
-In \fI\-iterate\fP mode, number of times to randomly iterate the
-functions, in thousands. In \fI\-recurse\fP mode, number of times
+.B \-\-detail \fInumber\fP
+In \fI\-\-iterate\fP mode, number of times to randomly iterate the
+functions, in thousands. In \fI\-\-recurse\fP mode, number of times
to apply functions (recursion depth) before drawing each point.
Default: 9
.TP 8
-.B \-functions \fInumber\fP
+.B \-\-functions \fInumber\fP
Number of functions to be iterated. Default: 3
.TP 8
-.B \-iterate
+.B \-\-iterate
Calculate by iteratively applying the functions in a random order,
-usually faster than \fI\-recurse\fP. This is the default.
+usually faster than \fI\-\-recurse\fP. This is the default.
.TP 8
-.B \-recurse
+.B \-\-recurse
Calculate by recursively applying all combinations of the functions.
This is the historical behavior and may produce neater output than
-\fI\-iterate\fP.
+\fI\-\-iterate\fP.
.TP 8
-.B \-no-rotate
+.B \-\-no-rotate
Disable the rotation component of the functions.
.TP 8
-.B \-no-scale
+.B \-\-no-scale
Disable the scaling component of the functions.
.TP 8
-.B \-no-translate
+.B \-\-no-translate
Disable the varying translation component of the functions.
.TP 8
-.B \-no-multi
+.B \-\-no-multi
Turn off multi-coloured mode, only one colour is used to colour the whole set.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1),
imsmap \- generate fractal maps
.SH SYNOPSIS
.B imsmap
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIint\fP] [\-delay \fIseconds\fP] [\-delay2 \fImicroseconds\fP] [\-iterations \fIint\fP] [\-mode h|s|v|random]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP] [\-\-foreground \fIcolor\fP]
+[\-\-background \fIcolor\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-mono] [\-\-install] [\-\-visual \fIvisual\fP] [\-\-ncolors \fIint\fP] [\-\-delay \fIseconds\fP] [\-\-delay2 \fImicroseconds\fP] [\-\-iterations \fIint\fP] [\-\-mode h|s|v|random]
+[\-\-fps]
.SH DESCRIPTION
The \fIimsmap\fP program generates map or cloud-like patterns. It looks
quite different in monochrome and color.
.I imsmap
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-mono
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-mono
If on a color display, pretend we're on a monochrome display.
.TP 8
-.B \-install
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-ncolors \fIinteger\fP
+.B \-\-ncolors \fIinteger\fP
How many colors to use. Default 50.
.TP 8
-.B \-delay \fIinteger\fP
+.B \-\-delay \fIinteger\fP
How long to delay between images. Default 10 seconds.
.TP 8
-.B \-delay2 \fIinteger\fP
+.B \-\-delay2 \fIinteger\fP
How long to delay between bitmaps. Default 200000 (0.2 seconds).
.TP 8
-.B \-iterations \fIinteger\fP
+.B \-\-iterations \fIinteger\fP
A measure of the resolution of the resultant image, from 0 to 7. Default 7.
.TP 8
-.B \-mode [ hue | saturation | value | random ]
+.B \-\-mode [ hue | saturation | value | random ]
The axis upon which colors should be interpolated between the foreground
and background color. Default random.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
between slowly moving circles.
.SH SYNOPSIS
.B interaggregate
-[\-display \fIhost:display.screen\fP]
-[\-foreground \fIcolor\fP]
-[\-background \fIcolor\fP]
-[\-num\-circles \fIdisc count\fP]
-[\-growth\-delay \fIdelayms\fP]
-[\-max\-cycles \fImaxr\fP]
-[\-percent\-orbits \fIpercent\fP]
-[\-base\-orbits \fIpercent\fP]
-[\-base\-on\-center]
-[\-draw\-centers]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-foreground \fIcolor\fP]
+[\-\-background \fIcolor\fP]
+[\-\-num\-circles \fIdisc count\fP]
+[\-\-growth\-delay \fIdelayms\fP]
+[\-\-max\-cycles \fImaxr\fP]
+[\-\-percent\-orbits \fIpercent\fP]
+[\-\-base\-orbits \fIpercent\fP]
+[\-\-base\-on\-center]
+[\-\-draw\-centers]
+[\-\-fps]
.SH DESCRIPTION
The Intersection Aggregate is a fun visualization defining the relationships
between objects with Casey Reas, William Ngan, and Robert Hodgin. Commissioned
.I interaggregate
accepts the following options:
.TP 8
-.B \-num\-circles \fIdisc count\fP (Default: \fI100\fP)
+.B \-\-num\-circles \fIdisc count\fP (Default: \fI100\fP)
Number of slowly moving and growing discs to use. The more discs,
the more CPU power.
.TP 8
-.B \-growth\-delay \fIdelayms\fP (Default: \fI18000\fP)
+.B \-\-growth\-delay \fIdelayms\fP (Default: \fI18000\fP)
Delay in ms between drawing cycles. More delay, slower (but smoother
and less CPU intensive.)
art.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
+.TP 8
+.B \-\-visual \fIvisual\fP
+Specify which visual to use. Legal values are the name of a visual class,
+or the id number (decimal or hex) of a specific visual.
+.TP 8
+.B \-\-window
+Draw on a newly-created window. This is the default.
+.TP 8
+.B \-\-root
+Draw on the root window.
+.TP 8
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
.SH ENVIRONMENT
.PP
.TP 8
to get the name of a resource file that overrides the global
resources stored in the RESOURCE_MANAGER property.
.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH BUGS
.PP
.TP 8
interference \- decaying sinusoidal waves
.SH SYNOPSIS
.B interference
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-count \fInumber\fP]
-[\-gridsize \fInumber\fP]
-[\-delay \fInumber\fP]
-[\-speed \fInumber\fP]
-[\-radius \fInumber\fP]
-[\-ncolors \fInumber\fP]
-[\-color-shift \fInumber\fP]
-[\-hue \fInumber\fP]
-[\-no-db]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-count \fInumber\fP]
+[\-\-gridsize \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-speed \fInumber\fP]
+[\-\-radius \fInumber\fP]
+[\-\-ncolors \fInumber\fP]
+[\-\-color-shift \fInumber\fP]
+[\-\-hue \fInumber\fP]
+[\-\-no-db]
+[\-\-fps]
.SH DESCRIPTION
Another color-field hack, this one works by computing decaying sinusoidal
waves, and allowing them to interfere with each other as their origins
move.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-count \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-count \fInumber\fP
Number of Waves. 0 - 20. Default: 3.
.TP 8
-.B \-gridsize \fInumber\fP
+.B \-\-gridsize \fInumber\fP
Magnification. 1 - 20. Default: 2.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 30000 (0.03 seconds.).
.TP 8
-.B \-speed \fInumber\fP
+.B \-\-speed \fInumber\fP
Wave Speed. 1 - 100. Default: 30.
.TP 8
-.B \-radius \fInumber\fP
+.B \-\-radius \fInumber\fP
Wave Size. 50 - 1500. Default: 800.
.TP 8
-.B \-ncolors \fInumber\fP
+.B \-\-ncolors \fInumber\fP
Number of Colors. Default: 192.
.TP 8
-.B \-color-shift \fInumber\fP
+.B \-\-color-shift \fInumber\fP
Color Contrast. 0 - 100. Default: 60.
.TP 8
-.B \-hue \fInumber\fP
+.B \-\-hue \fInumber\fP
Hue of the base color (0-360, as in HSV space.) Default 0, meaning random.
.TP 8
-.B \-db | \-no-db
+.B \-\-db | \-\-no-db
Whether to double buffer.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
between slowly moving circles.
.SH SYNOPSIS
.B intermomentary
-[\-display \fIhost:display.screen\fP]
-[\-foreground \fIcolor\fP]
-[\-background \fIcolor\fP]
-[\-num\-discs \fIdisc count\fP]
-[\-draw\-delay \fIdelayms\fP]
-[\-max\-riders \fImaxr\fP]
-[\-max\-radius \fImaxradius\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-foreground \fIcolor\fP]
+[\-\-background \fIcolor\fP]
+[\-\-num\-discs \fIdisc count\fP]
+[\-\-draw\-delay \fIdelayms\fP]
+[\-\-max\-riders \fImaxr\fP]
+[\-\-max\-radius \fImaxradius\fP]
+[\-\-fps]
.SH DESCRIPTION
The Intersection Momentary is a fun visualization defining the relationships
between objects with Casey Reas, William Ngan, and Robert Hodgin. Commissioned
.SH OPTIONS
Intermomentary accepts the following options:
.TP 8
-.B \-num\-discs \fIdisc count\fP (Default: \fI85\fP)
+.B \-\-num\-discs \fIdisc count\fP (Default: \fI85\fP)
Number of slowly moving and growing discs to use. The more discs,
the more CPU power.
.TP 8
-.B \-draw\-delay \fIdelayms\fP (Default: \fI30000\fP)
+.B \-\-draw\-delay \fIdelayms\fP (Default: \fI30000\fP)
Delay in ms between drawing cycles. More delay, slower (but smoother
and less CPU intensive.)
art.
.TP 8
-.B \-max\-riders \fImaxrider\fP (Default: \fI40\fP)
+.B \-\-max\-riders \fImaxrider\fP (Default: \fI40\fP)
Maximum number of 'riders', single dots moving around the edge of the discs.
.TP 8
-.B \-max\-radius \fImaxradius\fP (Default: \fI100\fP)
+.B \-\-max\-radius \fImaxradius\fP (Default: \fI100\fP)
Maximum possible radius of a disc.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
+.TP 8
+.B \-\-visual \fIvisual\fP
+Specify which visual to use. Legal values are the name of a visual class,
+or the id number (decimal or hex) of a specific visual.
+.TP 8
+.B \-\-window
+Draw on a newly-created window. This is the default.
+.TP 8
+.B \-\-root
+Draw on the root window.
+.TP 8
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.SH BUGS
+Setting the background to anything besides black confuses the intensity
+algorithm and will look terrible.
.SH ENVIRONMENT
.PP
.TP 8
.B XENVIRONMENT
to get the name of a resource file that overrides the global
resources stored in the RESOURCE_MANAGER property.
-.SH BUGS
-Setting the background to anything besides black confuses the intensity
-algorithm and will look terrible.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
juggle \- juggling man screen saver.
.SH SYNOPSIS
.B juggle
-[\-display host:display.screen ]
-[\-root ]
-[\-window ]
-[\-mono ]
-[\-install | \-noinstall ]
-[\-visual visual ]
-[\-window\-id id ]
-[\-pattern pattern ]
-[\-tail number ]
-[\-real | \-no\-real ]
-[\-describe | \-no\-describe ]
-[\-balls | \-no\-balls ]
-[\-clubs | \-no\-clubs ]
-[\-torches | \-no\-torches ]
-[\-knives | \-no\-knives ]
-[\-rings | \-no\-rings ]
-[\-bballs | \-no\-bballs ]
-[\-count count ]
-[\-cycles cycles ]
-[\-delay delay ]
-[\-ncolors ncolors ]
-[\-fps]
+[\-\-display host:display.screen]
+[\-\-root]
+[\-\-window]
+[\-\-visual \fIvisual\fP]
+[\-\-window\-id \fInumber\fP]
+[\-\-mono]
+[\-\-install | \-\-noinstall]
+[\-\-visual visual]
+[\-\-window\-id id]
+[\-\-pattern pattern]
+[\-\-tail number]
+[\-\-real | \-\-no\-real]
+[\-\-describe | \-\-no\-describe]
+[\-\-balls | \-\-no\-balls]
+[\-\-clubs | \-\-no\-clubs]
+[\-\-torches | \-\-no\-torches]
+[\-\-knives | \-\-no\-knives]
+[\-\-rings | \-\-no\-rings]
+[\-\-bballs | \-\-no\-bballs]
+[\-\-count count]
+[\-\-cycles cycles]
+[\-\-delay delay]
+[\-\-ncolors ncolors]
+[\-\-fps]
.SH DESCRIPTION
Draws a stick-man juggling various collections of objects.
.SH OPTIONS
.I juggle
accepts the following options:
.TP 8
-.B \-display host:display.screen
+.B \-\-display host:display.screen
X11 display to use. Overrides
.B DISPLAY
environment variable.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created X window. This is the default.
.TP 8
-.B \-mono
+.B \-\-visual \fIvisual\fP
+Specify which visual to use. Legal values are the name of a visual class,
+or the id number (decimal or hex) of a specific visual.
+.TP 8
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-mono
Draw in monochrome.
.TP 8
-.B \-install | \-noinstall
+.B \-\-install | \-\-noinstall
Turn on/off installing colormap.
.TP 8
-.B \-visual visual
+.B \-\-visual visual
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window\-id id
+.B \-\-window\-id id
Draw on an already existing X window.
.TP 8
-.B \-pattern\ \(dq pattern \(dq
+.B \-\-pattern\ \(dq pattern \(dq
Specify juggling pattern in annotated
.B site-swap
notation. In
\&_ Bounce
.TE
.TP 8
-.B \-pattern\ \(dq[ pattern ]\(dq
+.B \-\-pattern\ \(dq[ pattern ]\(dq
Specify juggling pattern in annotated
.B Adam
notation. Adam notation is a little harder to visualize. Each
For example, both of these describe a 3\-Shower:
.IP
-.B \-pattern\ "+5 1"
+.B \-\-pattern\ "+5 1"
.IP
-.B \-pattern\ "[+3 1]"
+.B \-\-pattern\ "[+3 1]"
For further examples, see the
.B portfolio
list in the source code.
.TP 8
-.B \-tail number
+.B \-\-tail number
Minimum Trail Length. 0 \- 100. Default: 1. Objects may override
this, for example flaming torches always leave a trail.
.TP 8
-.BR \-real | \-no\-real
+.BR \-\-real | \-\-no\-real
Turn on/off real-time juggling.
.B Deprecated.
There should be no need to turn off real-time juggling, even on slow
systems. Adjust speed using
-.B \-count
+.B \-\-count
above.
.TP 8
-.BR \-describe | \-no\-describe
+.BR \-\-describe | \-\-no\-describe
Turn on/off pattern descriptions.
.TP 8
-.BR \-balls | \-no\-balls
+.BR \-\-balls | \-\-no\-balls
Turn on/off Balls.
.TP 8
-.BR \-clubs | \-no\-clubs
+.BR \-\-clubs | \-\-no\-clubs
Turn on/off Clubs.
.TP 8
-.BR \-torches | \-no\-torches
+.BR \-\-torches | \-\-no\-torches
Turn on/off Flaming Torches.
.TP 8
-.BR \-knives | \-no\-knives
+.BR \-\-knives | \-\-no\-knives
Turn on/off Knives.
.TP 8
-.BR \-rings | \-no\-rings
+.BR \-\-rings | \-\-no\-rings
Turn on/off Rings.
.TP 8
-.BR \-bballs | \-no\-bballs
+.BR \-\-bballs | \-\-no\-bballs
Turn on/off Bowling Balls.
.TP 8
-.B \-count number
+.B \-\-count number
Speed. 50 \- 1000. Default: 200. This determines the expected time
interval between a throw and the next catch, in milliseconds.
.TP 8
-.B \-cycles number
+.B \-\-cycles number
Performance Length. 50 \- 1000. Default: 1000. Setting this smaller
will force the juggler to switch patterns (and objects) more often.
.TP 8
-.B \-delay delay
+.B \-\-delay delay
Additional delay between frames, in microseconds. Default: 10000.
.B Deprecated.
Adjust speed using
-.BR \-count .
+.BR \-\-count .
.TP 8
-.B \-ncolors ncolors
+.B \-\-ncolors ncolors
Maximum number of colors to use. Default: 32.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
julia \- draws spinning, animating julia-set fractals
.SH SYNOPSIS
.B julia
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP] [\-delay \fImicroseconds\fP] [\-cycles \fIinteger\fP] [\-count \fIinteger\fP]
+[\-\-display \fIhost:display.screen\fP] [\-\-foreground \fIcolor\fP]
+[\-\-background \fIcolor\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-mono] [\-\-install] [\-\-visual \fIvisual\fP] [\-\-ncolors \fIinteger\fP] [\-\-delay \fImicroseconds\fP] [\-\-cycles \fIinteger\fP] [\-\-count \fIinteger\fP]
-[\-fps]
+[\-\-fps]
.SH DESCRIPTION
The \fIjulia\fP program draws spinning, animating julia-set fractals.
.I julia
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-mono
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-mono
If on a color display, pretend we're on a monochrome display.
.TP 8
-.B \-install
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-ncolors \fIinteger\fP
+.B \-\-ncolors \fIinteger\fP
How many colors should be used (if possible). Default 200.
The colors used cycle through the hue, making N stops around
the color wheel.
.TP 8
-.B \-cycles \fIinteger\fP
+.B \-\-cycles \fIinteger\fP
.TP 8
-.B \-count \fIinteger\fP
+.B \-\-count \fIinteger\fP
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1),
Kaleidescope \- rotating line segments
.SH SYNOPSIS
.B kaleidescope
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-install] [\-visual \fIvisual\fP] [\-color_mode \fImono | nice | greedy\fP] [-nsegments \fIint\fP] [\-ntrails \fIint\fP] [\-local_rotation \fIint\fP] [\-global_rotation \fIint\fP] [\-delay \fIusecs\fP] [\-redmin \fIint\fP] [\-greenmin \fIint\fP] [\-bluemin \fIint\fP] [\-redrange \fIint\fP] [\-greenrange \fIint\fP] [\-bluerange \fIint\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP] [\-\-foreground \fIcolor\fP]
+[\-\-background \fIcolor\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-install] [\-\-visual \fIvisual\fP] [\-\-color_mode \fImono | nice | greedy\fP] [-nsegments \fIint\fP] [\-\-ntrails \fIint\fP] [\-\-local_rotation \fIint\fP] [\-\-global_rotation \fIint\fP] [\-\-delay \fIusecs\fP] [\-\-redmin \fIint\fP] [\-\-greenmin \fIint\fP] [\-\-bluemin \fIint\fP] [\-\-redrange \fIint\fP] [\-\-greenrange \fIint\fP] [\-\-bluerange \fIint\fP]
+[\-\-fps]
.SH DESCRIPTION
The \fIkaleidescope\fP program draws line segments in a symmetric pattern
that evolves over time.
.I kaleidescope
accepts the following options:
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-color_mode "mono | nice | greedy"
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-color_mode "mono | nice | greedy"
Specify how kaleidescope uses colors. Mono uses
just the default foreground and background colors. Nice uses one
color for each segment (specified by nsegments). Greedy uses (ntrails * nsegments) + 1 colors.
.TP 8
-.B \-install
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-nsegments integer
+.B \-\-nsegments integer
The number of segments to draw. Default is 7.
.TP 8
-.B \-ntrails integer
+.B \-\-ntrails integer
The number of trails to draw. Default is 100.
.TP 8
-.B \-local_rotation integer
+.B \-\-local_rotation integer
The rate at which segments rotate around their center. Default is -59.
.TP 8
-.B \-global_rotation integer
+.B \-\-global_rotation integer
The rate at which segments rotate around the center of the window.
Default is 1.
.TP 8
-.B \-redmin, \-greenmin, \-bluemin, \-redrange, \-greenrange, \-bluerange
+.B \-\-redmin, \-\-greenmin, \-\-bluemin, \-\-redrange, \-\-greenrange, \-\-bluerange
All take an integer argument. When colors are randomly chosen, they
are chosen from the interval min to min plus range. The minimums default
to 30000. The ranges default to 20000.
.TP 8
-.B \-delay microseconds
+.B \-\-delay microseconds
How much of a delay should be introduced between steps of the animation.
Default is 20000, or about 5 frames a second.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR kaleidescope (MANSUFFIX)
kumppa \- spiraling, spinning, splashes of color rush toward the screen.
.SH SYNOPSIS
.B kumppa
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-speed \fInumber\fP]
-[\-random]
-[\-dbuf]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-speed \fInumber\fP]
+[\-\-random]
+[\-\-dbuf]
+[\-\-fps]
.SH DESCRIPTION
Spiraling, spinning, and very, very fast splashes of color rush toward the
screen.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 10000 (0.01 seconds.).
.TP 8
-.B \-speed \fInumber\fP
+.B \-\-speed \fInumber\fP
Density. 0.0001 - 0.2. Default: 0.1.
.TP 8
-.B \-random | \-no-random
+.B \-\-random | \-\-no-random
Whether to randomize.
.TP 8
-.B \-dbuf | \-no-dbuf
+.B \-\-dbuf | \-\-no-dbuf
Whether to double buffer.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
laser \- draws vaguely laser-like moving lines
.SH SYNOPSIS
.B laser
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP] [\-delay \fImicroseconds\fP] [\-cycles \fIinteger\fP] [\-count \fIinteger\fP]
+[\-\-display \fIhost:display.screen\fP] [\-\-foreground \fIcolor\fP]
+[\-\-background \fIcolor\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-mono] [\-\-install] [\-\-visual \fIvisual\fP] [\-\-ncolors \fIinteger\fP] [\-\-delay \fImicroseconds\fP] [\-\-cycles \fIinteger\fP] [\-\-count \fIinteger\fP]
-[\-fps]
+[\-\-fps]
.SH DESCRIPTION
The \fIlaser\fP program draws vaguely laser-like moving lines
.SH OPTIONS
.I laser
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-mono
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-mono
If on a color display, pretend we're on a monochrome display.
.TP 8
-.B \-install
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-ncolors \fIinteger\fP
+.B \-\-ncolors \fIinteger\fP
How many colors should be used (if possible). Default 64.
The colors used cycle through the hue, making N stops around the color wheel.
.TP 8
-.B \-cycles \fIinteger\fP
+.B \-\-cycles \fIinteger\fP
Default 200.
.TP 8
-.B \-count \fIinteger\fP
+.B \-\-count \fIinteger\fP
Default 10.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1),
lcdscrub \- attempt to repair burn-in on LCD screens
.SH SYNOPSIS
.B lcdscrub
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-spread \fInumber\fP]
-[\-cycles \fInumber\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-spread \fInumber\fP]
+[\-\-cycles \fInumber\fP]
+[\-\-fps]
.SH DESCRIPTION
This screen saver is not meant to look pretty, but rather, to
repair burn-in on LCD monitors.
can often repair the damage. That's what this screen saver does.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 1000000 (1 second.).
.TP 8
-.B \-spread \fInumber\fP
+.B \-\-spread \fInumber\fP
Distance between lines. Default 8.
.TP 8
-.B \-cycles \fInumber\fP
+.B \-\-cycles \fInumber\fP
Steps before switching display mode. Default 60.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1),
lightning \- draws fractal lightning bolts
.SH SYNOPSIS
.B lightning
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP] [\-delay \fImicroseconds\fP]
+[\-\-display \fIhost:display.screen\fP] [\-\-foreground \fIcolor\fP]
+[\-\-background \fIcolor\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-mono] [\-\-install] [\-\-visual \fIvisual\fP] [\-\-ncolors \fIinteger\fP] [\-\-delay \fImicroseconds\fP]
-[\-fps]
+[\-\-fps]
.SH DESCRIPTION
The \fIlightning\fP program draws fractal lightning bolts
.SH OPTIONS
.I lightning
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-mono
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-mono
If on a color display, pretend we're on a monochrome display.
.TP 8
-.B \-install
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-ncolors \fIinteger\fP
+.B \-\-ncolors \fIinteger\fP
How many colors should be used (if possible). Default 64.
The colors are chosen randomly.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1),
lisa \- draws animated full-loop lissajous figures
.SH SYNOPSIS
.B lisa
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP] [\-delay \fImicroseconds\fP] [\-cycles \fIinteger\fP] [\-count \fIinteger\fP] [\-size \fIinteger\fP]
+[\-\-display \fIhost:display.screen\fP] [\-\-foreground \fIcolor\fP]
+[\-\-background \fIcolor\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-mono] [\-\-install] [\-\-visual \fIvisual\fP] [\-\-ncolors \fIinteger\fP] [\-\-delay \fImicroseconds\fP] [\-\-cycles \fIinteger\fP] [\-\-count \fIinteger\fP] [\-\-size \fIinteger\fP]
-[\-fps]
+[\-\-fps]
.SH DESCRIPTION
The \fIlisa\fP program draws animated full-loop lissajous figures.
.SH OPTIONS
.I lisa
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-mono
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-mono
If on a color display, pretend we're on a monochrome display.
.TP 8
-.B \-install
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-ncolors \fIinteger\fP
+.B \-\-ncolors \fIinteger\fP
How many colors should be used (if possible). Default 200.
The colors are chosen randomly.
.TP 8
-.B \-cycles \fIinteger\fP
+.B \-\-cycles \fIinteger\fP
.TP 8
-.B \-count \fIinteger\fP
+.B \-\-count \fIinteger\fP
.TP 8
-.B \-size \fIinteger\fP
+.B \-\-size \fIinteger\fP
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1),
lissie \- lissajous figure.
.SH SYNOPSIS
.B lissie
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-count \fInumber\fP]
-[\-cycles \fInumber\fP]
-[\-delay \fInumber\fP]
-[\-ncolors \fInumber\fP]
-[\-size \fInumber\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-count \fInumber\fP]
+[\-\-cycles \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-ncolors \fInumber\fP]
+[\-\-size \fInumber\fP]
+[\-\-fps]
.SH DESCRIPTION
Another Lissajous figure. This one draws the progress of circular shapes
along a path.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-count \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-count \fInumber\fP
Count. 0 - 20. Default: 1.
.TP 8
-.B \-cycles \fInumber\fP
+.B \-\-cycles \fInumber\fP
Timeout. Default: 20000.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 10000 (0.01 seconds.).
.TP 8
-.B \-ncolors \fInumber\fP
+.B \-\-ncolors \fInumber\fP
Number of Colors. Default: 200.
.TP 8
-.B \-size \fInumber\fP
+.B \-\-size \fInumber\fP
Size. -500 to +500. Default: -200.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
lmorph \- morphing lines
.SH SYNOPSIS
.B lmorph
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-points \fIint\fP] [\-steps \fIint\fP] [\-delay \fIusecs\fP] [\-figtype \fItype\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP] [\-\-foreground \fIcolor\fP]
+[\-\-background \fIcolor\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-mono] [\-\-install] [\-\-visual \fIvisual\fP] [\-\-points \fIint\fP] [\-\-steps \fIint\fP] [\-\-delay \fIusecs\fP] [\-\-figtype \fItype\fP]
+[\-\-fps]
.SH DESCRIPTION
The \fIlmorph\fP program generates random spline-ish line drawings and
morphs between them.
.I lmorph
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-mono
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-mono
If on a color display, pretend we're on a monochrome display.
.TP 8
-.B \-install
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-points \fIinteger\fP
+.B \-\-points \fIinteger\fP
Number of points in each line drawing. Default is 200 points.
.TP 8
-.B \-steps \fIinteger\fP
+.B \-\-steps \fIinteger\fP
Interpolation steps from one drawing to the next. Default is 150. You
may specify 0, to get a random number between 100 and 500.
.TP 8
-.B \-delay \fImicroseconds\fP
+.B \-\-delay \fImicroseconds\fP
How much of a delay should be introduced between steps of the animation.
Default 70000.
.TP 8
-.B \-figtype \fItype\fP
+.B \-\-figtype \fItype\fP
Limit the figures to only open or closed figures. Possible types are
"all" (default), "open" and "closed".
.TP 8
-.B \-linewidth \fIinteger\fP
+.B \-\-linewidth \fIinteger\fP
Width of lines. Default is 5 pixels.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
loop \- cellular automaton.
.SH SYNOPSIS
.B loop
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-cycles \fInumber\fP]
-[\-delay \fInumber\fP]
-[\-ncolors \fInumber\fP]
-[\-size \fInumber\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-cycles \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-ncolors \fInumber\fP]
+[\-\-size \fInumber\fP]
+[\-\-fps]
.SH DESCRIPTION
Another cellular automaton.
This one produces loop-shaped colonies that spawn, age, and eventually die.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-cycles \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-cycles \fInumber\fP
Timeout. 0 - 8000. Default: 1600.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 100000 (0.10 seconds.).
.TP 8
-.B \-ncolors \fInumber\fP
+.B \-\-ncolors \fInumber\fP
Number of Colors. Default: 15.
.TP 8
-.B \-size \fInumber\fP
+.B \-\-size \fInumber\fP
Size. -50 - 50. Default: -12.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
marbling \- Marble-like or cloud-like patterns.
.SH SYNOPSIS
.B marbling
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-scale \fInumber\fP]
-[\-iterations \fInumber\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-scale \fInumber\fP]
+[\-\-iterations \fInumber\fP]
+[\-\-fps]
.SH DESCRIPTION
This generates a random field with Perlin Noise, then permutes it with
Fractal Brownian Motion to create images that somewhat resemble clouds,
the colors chosen.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 10000 (0.01 seconds).
.TP 8
-.B \-scale \fInumber\fP
+.B \-\-scale \fInumber\fP
Scale. 1 - 30. Default: 10.
.TP 8
-.B \-iterations \fInumber\fP
+.B \-\-iterations \fInumber\fP
Complexity. 1 - 20. Default: 5.
.TP 8
-.B \-fps | \-no-fps
+.B \-\-fps | \-\-no-fps
Whether to show a frames-per-second display at the bottom of the screen.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
maze \- an automated X11 demo repeatedly creating and solving a random maze
.SH SYNOPSIS
.B maze
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-install] [\-visual \fIvisual\fP] [\-grid\-size \fIpixels\fP] [\-live\-color \fIcolor\fP] [\-dead\-color \fIcolor\fP] [\-solve\-delay \fIusecs\fP] [\-pre\-delay \fIusecs\fP] [\-post\-delay \fIusecs\fP] [\-generator \fIinteger\fP] [\-max\-length \fIinteger\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP] [\-\-foreground \fIcolor\fP]
+[\-\-background \fIcolor\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-install] [\-\-visual \fIvisual\fP] [\-\-grid\-size \fIpixels\fP] [\-\-live\-color \fIcolor\fP] [\-\-dead\-color \fIcolor\fP] [\-\-solve\-delay \fIusecs\fP] [\-\-pre\-delay \fIusecs\fP] [\-\-post\-delay \fIusecs\fP] [\-\-generator \fIinteger\fP] [\-\-max\-length \fIinteger\fP]
+[\-\-fps]
.SH DESCRIPTION
The \fImaze\fP program creates a "random" maze and then solves it with
graphical feedback.
.I maze
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-install
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-grid\-size \fIpixels\fP
+.B \-\-grid\-size \fIpixels\fP
The size of each block of the maze, in pixels; default is 0, meaning
pick a random grid size. Minimum meaningful value is 2.
.TP 8
-.B \-live\-color \fIcolor\fP
+.B \-\-live\-color \fIcolor\fP
The color of the path.
.TP 8
-.B \-dead\-color \fIcolor\fP
+.B \-\-dead\-color \fIcolor\fP
The color of the failed path (it is also stippled with a 50% pattern.)
.TP 8
-.B \-skip\-color \fIcolor\fP
+.B \-\-skip\-color \fIcolor\fP
The maze solver will choose to not go down a path if it can "see" (in a
straight line) that it is a dead end. This is the color to use for paths
that are skipped for this reason.
.TP 8
-.B \-surround\-color \fIcolor\fP
+.B \-\-surround\-color \fIcolor\fP
If the maze solver ever completely encloses an area within the maze, then
it knows that the exit is not in there (and in fact the interior of that
area might not even be reachable.) It will mark out those cells using this
color.
.TP 8
-.B \-solve\-delay \fIinteger\fP
+.B \-\-solve\-delay \fIinteger\fP
Delay (in microseconds) between each step of the solution path.
Default 5000, or about 1/200th second.
.TP 8
-.B \-pre\-delay \fIinteger\fP
+.B \-\-pre\-delay \fIinteger\fP
Delay (in microseconds) between generating a maze and starting to solve it.
Default 2000000 (2 seconds.)
.TP 8
-.B \-post\-delay \fIinteger\fP
+.B \-\-post\-delay \fIinteger\fP
Delay (in microseconds) after solving a maze and before generating a new one.
Default 4000000 (4 seconds.)
.TP 8
-.B \-generator \fInum\fP
+.B \-\-generator \fInum\fP
Sets the algorithm that will be used to generate the mazes. The
default is \-1, which randomly selects an algorithm for each maze that
is generated. Generator 0 is the original one, and works by walking
The three algorithms are essentially Kruskal, Prim, and a depth-first
recursive backtracker.
.TP 8
-.B \-max\-length \fInum\fP
+.B \-\-max\-length \fInum\fP
Controls the maximum length of walls drawn in one go by generator 1.
.PP
Clicking the mouse in the maze window controls it.
.B RightButton
Exit.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH BUGS
Expose events force a restart of maze.
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
memscroller \- scrolls a dump of its own RAM across the screen
.SH SYNOPSIS
.B memscroller
-[\-display \fIhost:display.screen\fP]
-[\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP]
-[\-font \fIfont\fP]
-[\-delay \fIint\fP]
-[\-mono | -color]
-[\-ram | -random | \-filename \fIfile\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-mono] [\-\-install] [\-\-visual \fIvisual\fP]
+[\-\-font \fIfont\fP]
+[\-\-delay \fIint\fP]
+[\-\-mono | -color]
+[\-\-ram | -random | \-\-filename \fIfile\fP]
+[\-\-fps]
.SH DESCRIPTION
The \fImemscroller\fP program scrolls a dump of its own process memory
across the screen in three windows at three different rates.
.I memscroller
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-install
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-color
+.B \-\-color
Render each three bytes of memory as R, G, B. This is the default.
.TP 8
-.B \-mono
+.B \-\-mono
Render each byte of memory in shades of green.
.TP 8
-.B \-ram
+.B \-\-ram
Read from the process's address space. This is the default.
.TP 8
-.B \-random
+.B \-\-random
Instead of reading from memory, generate random numbers.
.TP 8
-.B \-filename \fIfile\fP
+.B \-\-filename \fIfile\fP
Instead of reading from memory, read from the given file until EOF, then
re-open it. If you have permission, /dev/mem is an interesting choice here.
(Note that /dev/null won't ever display anything, because it returns EOF
without ever returning any data.)
.TP 8
-.B \-delay \fImicroseconds\fP
+.B \-\-delay \fImicroseconds\fP
How much of a delay should be introduced between steps of the animation.
Default 10000.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
MetaBalls \- draws 2D metaballs
.SH SYNOPSIS
.B MetaBalls
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-ncolors \fInumber\fP]
-[\-count \fInumber\fP]
-[\-delay \fInumber\fP]
-[\-cycles \fInumber\fP]
-[\-radius \fInumber\fP]
-[\-delta \fInumber\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-ncolors \fInumber\fP]
+[\-\-count \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-cycles \fInumber\fP]
+[\-\-radius \fInumber\fP]
+[\-\-delta \fInumber\fP]
+[\-\-fps]
.SH DESCRIPTION
This hack draws 2D metaballs to the screen by calculating the sum
of the colors of all metaballs covering a pixel.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-ncolors \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-ncolors \fInumber\fP
Number of Colors. Default: 256.
.TP 8
-.B \-count \fInumber\fP
+.B \-\-count \fInumber\fP
Number of MetaBalls. 2 - 255. Default: 10.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 5000 (0.005 seconds.).
.TP 8
-.B \-cycles \fInumber\fP
+.B \-\-cycles \fInumber\fP
Duration. 100 - 3000. Default: 1000.
.TP 8
-.B \-radius \fInumber\fP
+.B \-\-radius \fInumber\fP
MetaBall Radius. 2 - 100. Default: 100.
.TP 8
-.B \-delta \fInumber\fP
+.B \-\-delta \fInumber\fP
MetaBall Movement. 1 - 20. Default: 3.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1),
moire \- draw circular interference patterns
.SH SYNOPSIS
.B moire
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-delay \fIseconds\fP] [\-random \fIboolean\fP] [\-ncolors \fIint\fP] [\-offset \fIint\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP] [\-\-foreground \fIcolor\fP]
+[\-\-background \fIcolor\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-mono] [\-\-install] [\-\-visual \fIvisual\fP] [\-\-delay \fIseconds\fP] [\-\-random \fIboolean\fP] [\-\-ncolors \fIint\fP] [\-\-offset \fIint\fP]
+[\-\-fps]
.SH DESCRIPTION
The \fImoire\fP program draws cool circular interference patterns.
.SH OPTIONS
.I moire
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-mono
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-mono
If on a color display, pretend we're on a monochrome display.
.TP 8
-.B \-install
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-delay \fIseconds\fP
+.B \-\-delay \fIseconds\fP
How long to wait before starting over. Default 5 seconds.
.TP 8
-.B \-random \fIboolean\fP
+.B \-\-random \fIboolean\fP
Whether to ignore the foreground/background colors, and pick them randomly
instead.
.TP 8
-.B \-offset \fIinteger\fP
+.B \-\-offset \fIinteger\fP
The maximum random radius increment to use.
.TP 8
-.B \-ncolors \fIinteger\fP
+.B \-\-ncolors \fIinteger\fP
How many colors should be allocated in the color ramp (note that this
value interacts with \fIoffset\fP.)
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
moire2 \- circular interference patterns.
.SH SYNOPSIS
.B moire2
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-ncolors \fInumber\fP]
-[\-thickness \fInumber\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-ncolors \fInumber\fP]
+[\-\-thickness \fInumber\fP]
+[\-\-fps]
.SH DESCRIPTION
Another example of the fun you can have with moire interference patterns;
this hack generates fields of concentric circles or ovals, and combines the
another, causing the interference lines to ``spray.''
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 50000 (0.05 seconds.).
.TP 8
-.B \-ncolors \fInumber\fP
+.B \-\-ncolors \fInumber\fP
Number of Colors. Default: 150.
.TP 8
-.B \-thickness \fInumber\fP
+.B \-\-thickness \fInumber\fP
Thickness of lines, in pixels. Default: 0.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
mountain \- random 3D plots that look vaguely mountainous.
.SH SYNOPSIS
.B mountain
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-count \fInumber\fP]
-[\-delay \fInumber\fP]
-[\-ncolors \fInumber\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-count \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-ncolors \fInumber\fP]
+[\-\-fps]
.SH DESCRIPTION
Generates random 3d plots that look vaguely mountainous.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-count \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-count \fInumber\fP
Count. 0 - 100. Default: 30.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 1000 (0.001 seconds.).
.TP 8
-.B \-ncolors \fInumber\fP
+.B \-\-ncolors \fInumber\fP
Number of colors. Default: 64.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
munch \- munching squares
.SH SYNOPSIS
.B munch
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP]
-[\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install]
-[\-visual \fIvisual\fP] [\-delay \fIusecs\fP] [\-xor] [\-noxor]
-[\-clear \fInumber\fP] [\-simul \fInumber\fP]
-[\-classic | \-mismunch | \-random]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP] [\-\-foreground \fIcolor\fP]
+[\-\-background \fIcolor\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-mono] [\-\-install]
+[\-\-visual \fIvisual\fP] [\-\-delay \fIusecs\fP] [\-\-xor] [\-\-noxor]
+[\-\-clear \fInumber\fP] [\-\-simul \fInumber\fP]
+[\-\-classic | \-\-mismunch | \-\-random]
+[\-\-fps]
.SH DESCRIPTION
The
.I munch
.I munch
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-mono
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-mono
If on a color display, pretend we're on a monochrome display.
.TP 8
-.B \-install
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-delay \fIusecs\fP
+.B \-\-delay \fIusecs\fP
The delay between steps of the animation, in microseconds. Default: 2500.
.TP 8
-.B \-xor
+.B \-\-xor
Use the XOR drawing function. This is the default.
.TP 8
-.B \-no\-xor
+.B \-\-no\-xor
Don't use the XOR drawing function.
.TP 8
-.B \-clear \fInumber\fP
+.B \-\-clear \fInumber\fP
Number of squares to misdraw before clearing the display. Default: 65.
.TP 8
-.B \-simul \fInumber\fP
+.B \-\-simul \fInumber\fP
Number of squares to misdraw simultaneously. Default: 5.
.TP 8
-.B \-classic
+.B \-\-classic
Draw classic munching squares only.
.TP 8
-.B \-mismunch
+.B \-\-mismunch
Draw "mismunch" only.
.TP 8
-.B \-random
+.B \-\-random
Do one or the other.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH HISTORY
.B HAKMEM: MIT AI Memo 239, Feb. 29, 1972.
Beeler, M., Gosper, R.W., and Schroeppel, R.
#!/usr/bin/perl -w
-# Copyright © 2008-2021 Jamie Zawinski <jwz@jwz.org>
+# Copyright © 2008-2022 Jamie Zawinski <jwz@jwz.org>
#
# Permission to use, copy, modify, distribute, and sell this software and its
# documentation for any purpose is hereby granted without fee, provided that
use strict;
my $progname = $0; $progname =~ s@.*/@@g;
-my ($version) = ('$Revision: 1.15 $' =~ m/\s(\d[.\d]+)\s/s);
+my ($version) = ('$Revision: 1.16 $' =~ m/\s(\d[.\d]+)\s/s);
my $verbose = 0;
? $a cmp $b
: $hacks{$a} <=> $hacks{$b}}
(keys(%hacks))) {
- my $cmd = "$hack -root";
+ my $cmd = "$hack --root";
my $ts = (length($cmd) / 8) * 8;
while ($ts < 40) { $cmd .= "\t"; $ts += 8; }
nerverot \- induces edginess in the viewer
.SH SYNOPSIS
.B nerverot
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-db] [\-no\-db] [\-colors \fIinteger\fP] [\-delay \fImicroseconds\fP] [\-count \fIinteger\fP] [\-line\-width \fIinteger\fP] [\-event\-chance \fIfraction\fP] [\-iter\-amt \fIfraction\fP] [\-nervousness \fIfraction\fP] [\-max\-nerve\-radius \fIfraction\fP] [\-min\-radius \fIinteger\fP] [\-max\-radius \fIinteger\fP] [\-min\-scale \fIfraction\fP] [\-max\-scale \fIfraction\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP] [\-\-foreground \fIcolor\fP]
+[\-\-background \fIcolor\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-mono] [\-\-install] [\-\-visual \fIvisual\fP] [\-\-db] [\-\-no\-db] [\-\-colors \fIinteger\fP] [\-\-delay \fImicroseconds\fP] [\-\-count \fIinteger\fP] [\-\-line\-width \fIinteger\fP] [\-\-event\-chance \fIfraction\fP] [\-\-iter\-amt \fIfraction\fP] [\-\-nervousness \fIfraction\fP] [\-\-max\-nerve\-radius \fIfraction\fP] [\-\-min\-radius \fIinteger\fP] [\-\-max\-radius \fIinteger\fP] [\-\-min\-scale \fIfraction\fP] [\-\-max\-scale \fIfraction\fP]
+[\-\-fps]
.SH DESCRIPTION
The goal of \fInerverot\fP is to be interesting and compelling to
watch, yet induce a state of nervous edginess in the viewer. This manpage
.I nerverot
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-mono
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-mono
If on a color display, pretend we're on a monochrome display.
.TP 8
-.B \-install
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-db
-.B \-no\-db
+.B \-\-db
+.B \-\-no\-db
Use double-buffering (or not, respectively). Double-buffering may make
things look better for larger line widths and/or larger numbers of
blots, but "better" may equate to yielding less of the desired edginess
you're more likely to go into epileptic fits with it off. Hence, it
is off (false) by default, resource \fIdoubleBuffer\fP.
.TP 8
-.B \-colors \fIinteger\fP
+.B \-\-colors \fIinteger\fP
How many colors should be used (if possible). The colors
form a smooth ramp between two randomly-chosen colors. Defaults to 4,
resource \fIcolors\fP.
.TP 8
-.B \-delay \fImicroseconds\fP
+.B \-\-delay \fImicroseconds\fP
The interframe delay, in microseconds. Defaults to 10000, resource
\fIdelay\fP.
.TP 8
-.B \-max\-iters \fIinteger\fP
+.B \-\-max\-iters \fIinteger\fP
The maximum number of iterations (frames) before a new model is
generated. The actual number of iterations per model is a random number
between 1 and this value. Defaults to 1200, resource
\fImaxIters\fP.
.TP 8
-.B \-count \fIinteger\fP
+.B \-\-count \fIinteger\fP
How many "blots" to draw at a time. This number may be rounded down to
fit the particularly chosen model, and has a fixed minimum per-model.
Defaults to 250, resource \fIcount\fP.
.TP 8
-.B \-line\-width \fIinteger\fP
+.B \-\-line\-width \fIinteger\fP
The width of the lines to draw. 0 means an optimized pixel-thick line.
Defaults to 0, resource \fIlineWidth\fP.
.TP 8
-.B \-event\-chance \fIfraction\fP
+.B \-\-event\-chance \fIfraction\fP
The chance, per iteration, for a life-altering event to occur (such as
picking a new rotation target), in the range 0..1. Defaults to 0.2,
resource \fIeventChance\fP.
.TP 8
-.B \-iter\-amt \fIfraction\fP
+.B \-\-iter\-amt \fIfraction\fP
The fraction of movement towards a target (such as rotation angle or scale)
that happens per iteration, in the range 0..1. Defaults to 0.01,
resource \fIiterAmt\fP.
.TP 8
-.B \-nervousness \fIfraction\fP
+.B \-\-nervousness \fIfraction\fP
How nervous the drawing is, in the range 0..1. This is how jumpy the points
on each blot are. Defaults to 0.3, resource \fInervousness\fP.
.TP 8
-.B \-max\-nerve\-radius \fIfraction\fP
+.B \-\-max\-nerve\-radius \fIfraction\fP
The maximum radius of blot nervousness, as a fraction of the radius of the
blot, in the range 0..1. Defaults to 0.7, resource \fImaxNerveRadius\fP.
.TP 8
-.B \-min\-radius \fIinteger\fP
+.B \-\-min\-radius \fIinteger\fP
The minimum radius for a blot, in the range 1..100. Defaults to 3,
resource \fIminRadius\fP.
.TP 8
-.B \-max\-radius \fIinteger\fP
+.B \-\-max\-radius \fIinteger\fP
The maximum radius for a blot, in the range 1..100. Defaults to 25,
resource \fImaxRadius\fP.
.TP 8
-.B \-min\-scale \fIfraction\fP
+.B \-\-min\-scale \fIfraction\fP
The minimum overall scale of drawing, as a fraction of
\fImin(windowHeight,windowWidth)\fP, in the range 0..10. Defaults to 0.6,
resource \fIminScale\fP.
.TP 8
-.B \-max\-scale \fIfraction\fP
+.B \-\-max\-scale \fIfraction\fP
The maximum overall scale of drawing, as a fraction of
\fImin(windowHeight,windowWidth)\fP, in the range 0..10. Defaults to 1.75,
resource \fImaxScale\fP.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH X RESOURCES
There are resource equivalents for each option, noted above.
.SH BUGS
noseguy \- a little guy with a big nose wanders around being witty
.SH SYNOPSIS
.B noseguy
-[\-display \fIhost:display.screen\fP]
-[\-foreground \fIcolor\fP]
-[\-background \fIcolor\fP]
-[\-text-foreground \fIcolor\fP]
-[\-text-background \fIcolor\fP]
-[\-font \fIfont\fP]
-[\-window]
-[\-root]
-[\-install]
-[\-visual \fIvisual\fP]
-[\-mode \fImode\fP]
-[\-program \fIprogram\fP]
-[\-filename \fIfile\fP]
-[\-text \fItext\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-foreground \fIcolor\fP]
+[\-\-background \fIcolor\fP]
+[\-\-text-foreground \fIcolor\fP]
+[\-\-text-background \fIcolor\fP]
+[\-\-font \fIfont\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-install]
+[\-\-visual \fIvisual\fP]
+[\-\-mode \fImode\fP]
+[\-\-program \fIprogram\fP]
+[\-\-filename \fIfile\fP]
+[\-\-text \fItext\fP]
+[\-\-fps]
.SH DESCRIPTION
A little man with a big nose and a hat runs around spewing out messages to
the screen. This code (and its bitmaps) were extracted from the \fIxnlock\fP
.I noseguy
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-install
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-font \fIfont\fP
+.B \-\-font \fIfont\fP
The font used for the messages.
.TP 8
-.B \-program \fIprogram\fP
+.B \-\-program \fIprogram\fP
This program will be run periodically, and its output will be the text
of the messages. Default:
.BR xscreensaver\-settings (1),
or by editing your ~/.xscreensaver file.
.TP 8
-.B \-filename \fIfile\fP
+.B \-\-filename \fIfile\fP
If \fImode\fP is \fIfile\fP, then the contents of this file will be used
for all messages.
.TP 8
-.B \-text \fIstring\fP
+.B \-\-text \fIstring\fP
If \fImode\fP is \fIstring\fP, then this text will be used for all messages.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1),
pacman \- simulates a game of Pac-Man on a randomly-created level.
.SH SYNOPSIS
.B pacman
-[\-display \fIhost:display.screen\fP]
-[\-window]
-[\-root]
-[\-mono]
-[\-install]
-[\-visual \fIvisual\fP]
-[\-ncolors \fIinteger\fP]
-[\-delay \fImicroseconds\fP]
-[\-size \fIpixels\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-mono]
+[\-\-install]
+[\-\-visual \fIvisual\fP]
+[\-\-ncolors \fIinteger\fP]
+[\-\-delay \fImicroseconds\fP]
+[\-\-size \fIpixels\fP]
+[\-\-fps]
.SH DESCRIPTION
Simulates a game of Pac-Man on a randomly-created level.
.SH OPTIONS
.I pacman
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-mono
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-mono
If on a color display, pretend we're on a monochrome display.
.TP 8
-.B \-install
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-ncolors \fIinteger\fP
+.B \-\-ncolors \fIinteger\fP
How many colors should be used (if possible). Default 6.
.TP 8
-.B \-size \fIinteger\fP
+.B \-\-size \fIinteger\fP
How big to make Pac-Man and the ghosts. 0 means "default."
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1).
pedal \- pretty geometric picture program
.SH SYNOPSIS
.B pedal
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-delay \fIseconds\fP] [-maxlines \fInumber\fP] [-mono] [\-install] [\-visual \fIvisual\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP] [\-\-foreground \fIcolor\fP]
+[\-\-background \fIcolor\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-delay \fIseconds\fP] [-maxlines \fInumber\fP] [-mono] [\-\-install] [\-\-visual \fIvisual\fP]
+[\-\-fps]
.SH DESCRIPTION
The \fIpedal\fP program displays pretty geometric pictures.
.SH OPTIONS
.I pedal
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-foreground \fIcolor\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-foreground \fIcolor\fP
The color for the foreground. Default is white.
.TP 8
-.B \-background \fIcolor\fP
+.B \-\-background \fIcolor\fP
The color for the background. Default is black.
.TP 8
-.B \-delay \fIseconds\fP
+.B \-\-delay \fIseconds\fP
The number of seconds to pause between each picture.
.TP 8
-.B \-maxlines \fInumber\fP
+.B \-\-maxlines \fInumber\fP
The maximum number of lines in the drawing. Good values are
between 20 and 2000. Maximum value is 16K.
.PP
To make your X server grunt under load, and to impress your
-friends, try \fIpedal -mono -delay 0 -maxlines 100\fp.
+friends, try \fIpedal -mono -delay 0 -maxlines 100\fP.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
penetrate \- simulates a classic arcade shooting game
.SH SYNOPSIS
.B penetrate
-[\-display \fIhost:display.screen\fP] [\-root] [\-window]
-[\-install] [\-noinstall] [\-visual \fIvisual\fP]
-[\-bgrowth \fImicroseconds\fP] [\-lrate \fInumber\fP] [\-smart \fInumber\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-root]
+[\-\-window]
+[\-\-window\-id \fInumber\fP]
+[\-\-install]
+[\-\-noinstall]
+[\-\-visual \fIvisual\fP]
+[\-\-bgrowth \fImicroseconds\fP]
+[\-\-lrate \fInumber\fP]
+[\-\-smart \fInumber\fP]
+[\-\-fps]
.SH DESCRIPTION
.PP
\fIPenetrate\fP simulates the arcade classic with the cities and the stuff
player skip the learning process.
.SH OPTIONS
.TP 8
-.B \-display \fIhost:display.screen\fP
+.B \-\-display \fIhost:display.screen\fP
Specifies which X display we should use.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-window
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-install
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-noinstall
+.B \-\-noinstall
Don't install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual
class, or the id number (decimal or hex) of a specific visual.
Possible choices include
is consulted to obtain the required visual.
.RE
.TP 8
-.B \-foreground \fIcolor\fP
+.B \-\-foreground \fIcolor\fP
Specifies the default foreground color.
.TP 8
-.B \-background \fIcolor\fP
+.B \-\-background \fIcolor\fP
Specifies the default background color.
.TP 8
-.B \-bgrowth \fIinteger\fP
+.B \-\-bgrowth \fIinteger\fP
Specifies the growth rate of the bomb explosions.
.TP 8
-.B \-lrate \fIinteger\fP
+.B \-\-lrate \fIinteger\fP
Set the initial rate of laser fire.
.TP 8
.B -smart
Have the computer player skip the learning process.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH BUGS
The layout of the screen isn't quite the same as the game this program
tries to emulate. In this this program, the missiles come out of the
cities; when really, there are supposed to be three missile bases on
hills, with the cities in the valleys between them.
+.SH ENVIRONMENT
+.PP
+.TP 8
+.B DISPLAY
+to get the default host and display number.
+.TP 8
+.B XENVIRONMENT
+to get the name of a resource file that overrides the global resources
+stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
+.SH SEE ALSO
+.BR X (1),
+.BR xscreensaver (1)
.SH COPYRIGHT
Copyright \(co 1999 Adam Miller. Permission to use, copy, modify,
distribute, and sell this software and its documentation for any purpose is
penrose \- draws quasiperiodic tilings
.SH SYNOPSIS
.B penrose
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP] [\-delay \fImicroseconds\fP] [\-size \fIinteger\fP] [\-ammann] [\-no\-ammann]
+[\-\-display \fIhost:display.screen\fP] [\-\-foreground \fIcolor\fP]
+[\-\-background \fIcolor\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-mono] [\-\-install] [\-\-visual \fIvisual\fP] [\-\-ncolors \fIinteger\fP] [\-\-delay \fImicroseconds\fP] [\-\-size \fIinteger\fP] [\-\-ammann] [\-\-no\-ammann]
-[\-fps]
+[\-\-fps]
.SH DESCRIPTION
The \fIpenrose\fP program draws quasiperiodic tilings.
.I penrose
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-mono
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-mono
If on a color display, pretend we're on a monochrome display.
.TP 8
-.B \-install
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-ncolors \fIinteger\fP
+.B \-\-ncolors \fIinteger\fP
How many colors should be used (if possible). Default 64.
The colors are chosen randomly.
.TP 8
-.B \-size \fIinteger\fP
+.B \-\-size \fIinteger\fP
How big the tiles should be. Default 40 pixels.
.TP 8
-.B \-delay \fImilliseconds\fP
+.B \-\-delay \fImilliseconds\fP
How long (in 1/1,000,000'ths of a second) to wait between drawing each
tile. Default 10,000 or .01 seconds.
.TP 8
-.B \-ammann
+.B \-\-ammann
.TP 8
-.B \-no\-ammann
+.B \-\-no\-ammann
Whether Ammann lines should be added.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1),
petri \- simulates mold growing in a petri dish
.SH SYNOPSIS
.B petri
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-delay \fImicroseconds\fP] [\-size \fIinteger\fP] [\-mem-throttle \fIamount\fP] [\-count \fIinteger\fP] [\-originalcolors] [\-diaglim \fIreal\fP] [\-anychan \fIreal\fP] [\-minorchan \fIreal\fP] [\-instantdeathchan \fIreal\fP] [\-minlifespeed \fIreal\fP] [\-maxlifespeed \fIreal\fP] [\-mindeathspeed \fIreal\fP] [\-maxdeathspeed \fIreal\fP] [\-minlifespan \fIinteger\fP] [\-maxlifespan \fIinteger\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP] [\-\-foreground \fIcolor\fP]
+[\-\-background \fIcolor\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-mono] [\-\-install] [\-\-visual \fIvisual\fP] [\-\-delay \fImicroseconds\fP] [\-\-size \fIinteger\fP] [\-\-mem-throttle \fIamount\fP] [\-\-count \fIinteger\fP] [\-\-originalcolors] [\-\-diaglim \fIreal\fP] [\-\-anychan \fIreal\fP] [\-\-minorchan \fIreal\fP] [\-\-instantdeathchan \fIreal\fP] [\-\-minlifespeed \fIreal\fP] [\-\-maxlifespeed \fIreal\fP] [\-\-mindeathspeed \fIreal\fP] [\-\-maxdeathspeed \fIreal\fP] [\-\-minlifespan \fIinteger\fP] [\-\-maxlifespan \fIinteger\fP]
+[\-\-fps]
.SH DESCRIPTION
\fIpetri\fP simulates mold growing in a petri dish via a state-heavy grid
of automata (vaguely like Conway's Life, only with much more state per
.I petri
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-mono
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-mono
If on a color display, pretend we're on a monochrome display.
.TP 8
-.B \-install
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-delay \fImicroseconds\fP
+.B \-\-delay \fImicroseconds\fP
The interframe delay, in microseconds. Defaults to 10000, resource
\fIdelay\fP.
.TP 8
-.B \-size \fIinteger\fP
+.B \-\-size \fIinteger\fP
The size of a cell in pixels. Defaults to 4, resource \fIsize\fP.
.TP 8
-.B \-mem-throttle \fIamount\fP
+.B \-\-mem-throttle \fIamount\fP
The maximum amount of memory to consume, specified either in megabytes
(suffix "M"), kilobytes (suffix "K"), or bytes (sans suffix). In order
to meet the memory requirement, the cell size may be increased.
Defaults to 22M, resource \fImemThrottle\fP.
.TP 8
-.B \-count \fIinteger\fP
+.B \-\-count \fIinteger\fP
How many different varieties of mold to grow (including Black Death).
Defaults to 8, resource \fIcount\fP.
.TP 8
-.B \-originalcolors
+.B \-\-originalcolors
If specified, indicates that the colors used should be the artist's
original choices (a fixed set of primary and secondary colors). In this
case, count must be 8 or less. Defaults to not specified (i.e., false),
resource \fIoriginalcolors\fP.
.TP 8
-.B \-diaglim \fIreal\fP
+.B \-\-diaglim \fIreal\fP
The age limit for diagonal growth as a multiplier of
orthogonal growth (range 1..2). 1 means square growth, 1.414
(i.e., \fIsqrt(2)\fP) means approximately circular growth, 2 means
diamond growth. Defaults to 1.414, resource \fIdiaglim\fP.
.TP 8
-.B \-anychan \fIreal\fP
+.B \-\-anychan \fIreal\fP
The chance (range 0..1) that at each iteration, one or more
new cells will be born. Defaults to 0.0015, resource \fIanychan\fP.
.TP 8
-.B \-minorchan \fIreal\fP
+.B \-\-minorchan \fIreal\fP
The chance (range 0..1) that, given that new cells will be born, that only
two will be added (hence being a minor cell birth event).
Defaults to 0.5, resource \fIminorchan\fP.
.TP 8
-.B \-instantdeathchan \fIreal\fP
+.B \-\-instantdeathchan \fIreal\fP
The chance (range 0..1) that, given that death and destruction will happen,
that instead of using Black Death cells, death will come instantaneously.
Defaults to 0.2, resource \fIinstantdeathchan\fP.
.TP 8
-.B \-minlifespeed \fIreal\fP
+.B \-\-minlifespeed \fIreal\fP
The minimum speed for living cells as a fraction of the maximum possible
speed (range 0..1). Defaults to 0.04, resource \fIminlifespeed\fP.
.TP 8
-.B \-maxlifespeed \fIreal\fP
+.B \-\-maxlifespeed \fIreal\fP
The maximum speed for living cells as a fraction of the maximum possible
speed (range 0..1). Defaults to 0.13, resource \fImaxlifespeed\fP.
.TP 8
-.B \-mindeathspeed \fIreal\fP
+.B \-\-mindeathspeed \fIreal\fP
The minimum speed for Black Death cells as a fraction of the maximum possible
speed (range 0..1). Defaults to 0.42, resource \fImindeathspeed\fP.
.TP 8
-.B \-maxdeathspeed \fIreal\fP
+.B \-\-maxdeathspeed \fIreal\fP
The maximum speed for Black Death cells as a fraction of the maximum possible
speed (range 0..1). Defaults to 0.46, resource \fImaxdeathspeed\fP.
.TP 8
-.B \-minlifespan \fIinteger\fP
+.B \-\-minlifespan \fIinteger\fP
The minimum lifespan for a colony, in iterations, before Black Death
comes. Defaults to 500, resource \fIminlifespan\fP.
.TP 8
-.B \-maxlifespan \fIinteger\fP
+.B \-\-maxlifespan \fIinteger\fP
The maximum lifespan for a colony, in iterations, before Black Death
comes. Defaults to 1500, resource \fImaxlifespan\fP.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH X RESOURCES
There are resource equivalents for each option, noted above.
.SH BUGS
phosphor \- simulates an old terminal with long-sustain phosphor
.SH SYNOPSIS
.B phosphor
-[\-display \fIhost:display.screen\fP] [\-window] [\-root] [\-install]
-[\-visual \fIvisual\fP] [\-font \fIfont\fP] [\-scale \fIint\fP]
-[\-ticks \fIint\fP] [\-delay \fIusecs\fP] [\-program \fIcommand\fP]
-[\-meta] [\-esc] [\-bs] [\-del]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-install]
+[\-\-visual \fIvisual\fP] [\-\-font \fIfont\fP] [\-\-scale \fIint\fP]
+[\-\-ticks \fIint\fP] [\-\-delay \fIusecs\fP] [\-\-program \fIcommand\fP]
+[\-\-meta] [\-\-esc] [\-\-bs] [\-\-del]
+[\-\-fps]
.SH DESCRIPTION
The \fIphosphor\fP program draws text on the screen in a very large
pixelated font that looks like an old low resolution dumb tty. The
.I phosphor
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-install
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP\fP
+.B \-\-visual \fIvisual\fP\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-font \fIfont-name\fP
+.B \-\-font \fIfont-name\fP
The X font to use. Phosphor can take any font and scale it up to pixelate
it. The default is \fIfixed\fP.
.TP 8
-.B \-scale \fIint\fP
+.B \-\-scale \fIint\fP
How much to scale the font up: in other words, the size in real pixels of
the simulated pixels. Default 6.
.TP 8
-.B \-ticks \fIint\fP
+.B \-\-ticks \fIint\fP
The number of colors to use when fading to black. Default 20.
.TP 8
-.B \-delay \fIusecs\fP
+.B \-\-delay \fIusecs\fP
The speed of the terminal: how long to wait between drawing each character.
Default 50000, or about 1/20th second.
.TP 8
-.B \-pty
+.B \-\-pty
Launch the sub-program under a PTY, so that it can address the screen
directly. This is the default.
.TP 8
-.B \-pipe
+.B \-\-pipe
Launch the sub-program at the end of a pipe: do not let it address the
screen directly.
.TP 8
-.B \-program \fIsh-command\fP
+.B \-\-program \fIsh-command\fP
The command to run to generate the text to display. This option may
be any string acceptable to /bin/sh. The program will be run at the
end of a pty or pipe, and any characters that it prints to \fIstdout\fP
will be printed on phosphor's window. The characters will be printed
-artificially slowly, as per the \fI\-delay\fP option above. If the
+artificially slowly, as per the \fI\-\-delay\fP option above. If the
program exits, it will be launched again after 5 seconds.
For example:
phosphor -delay 0 -program tcsh
.sp
.fi
-.B \-esc
+.B \-\-esc
When the user types a key with the Alt or Meta keys held down, send an
ESC character first. This is the default.
.TP 8
-.B \-meta
+.B \-\-meta
When Meta or Alt are held down, set the high bit on the character instead.
.TP 8
-.B \-del
+.B \-\-del
Swap Backspace and Delete. This is the default.
.TP 8
-.B \-bs
+.B \-\-bs
Do not swap Backspace and Delete.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH TERMINAL EMULATION
By default, \fIphosphor\fP allocates a pseudo-tty for the sub-process to
Any characters typed on the phosphor window will be passed along to
the sub-process. (Note that this only works when running in "window"
-mode, not when running in \fI\-root\fP mode under xscreensaver.)
+mode, not when running in \fI\-\-root\fP mode under xscreensaver.)
.SH ENVIRONMENT
.PP
.TP 8
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
+.TP 8
.B TERM
to inform the sub-process of the type of terminal emulation.
.SH SEE ALSO
piecewise \- lots of moving circles intersecting in interesting ways.
.SH SYNOPSIS
.B piecewise
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-count \fInumber\fP]
-[\-ncolors \fInumber\fP]
-[\-colorspeed \fInumber\fP]
-[\-minradius \fInumber\fP]
-[\-maxradius \fInumber\fP]
-[\-no-db]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-count \fInumber\fP]
+[\-\-ncolors \fInumber\fP]
+[\-\-colorspeed \fInumber\fP]
+[\-\-minradius \fInumber\fP]
+[\-\-maxradius \fInumber\fP]
+[\-\-no-db]
+[\-\-fps]
.SH DESCRIPTION
This draws a bunch of moving circles which switch from visibility to invisibility
when they intersect.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 5000 (0.01 seconds.).
.TP 8
-.B \-count \fInumber\fP
+.B \-\-count \fInumber\fP
Number of circles. Default: 32.
.TP 8
-.B \-ncolors \fInumber\fP
+.B \-\-ncolors \fInumber\fP
Number of colors, only one of which is used at a time. Default: 256.
.TP 8
-.B \-colorspeed \fInumber\fP
+.B \-\-colorspeed \fInumber\fP
How fast the color changes (0 - 100). Default: 10.
.TP 8
-.B \-minradius \fInumber\fP
+.B \-\-minradius \fInumber\fP
Minimum circle radius (as a proportion of screen height). Default: 0.05.
.TP 8
-.B \-maxradius \fInumber\fP
+.B \-\-maxradius \fInumber\fP
Maximum circle radius (as a proportion of screen height). Default: 0.2.
.TP 8
-.B \-db | \-no-db
+.B \-\-db | \-\-no-db
Whether to double buffer.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
polyominoes \- fill a rectangle with irregularly-shaped blocks.
.SH SYNOPSIS
.B polyominoes
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-identical]
-[\-cycles \fInumber\fP]
-[\-delay \fInumber\fP]
-[\-ncolors \fInumber\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-identical]
+[\-\-cycles \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-ncolors \fInumber\fP]
+[\-\-fps]
.SH DESCRIPTION
Repeatedly attempts to completely fill a rectangle with irregularly-shaped
puzzle pieces.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-identical | \-no-identical
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-identical | \-\-no-identical
Whether to use identical pieces.
.TP 8
-.B \-cycles \fInumber\fP
+.B \-\-cycles \fInumber\fP
Duration. 500 - 5000. Default: 2000.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 10000 (0.01 seconds.).
.TP 8
-.B \-ncolors \fInumber\fP
+.B \-\-ncolors \fInumber\fP
Number of Colors. Default: 64.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
pong \- Pong Home Video Game Emulator
.SH SYNOPSIS
.B pong
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP]
-[\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install]
-[\-visual \fIvisual\fP]
-[\-clock \fIfloat\fP]
-[\-noise]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP] [\-\-foreground \fIcolor\fP]
+[\-\-background \fIcolor\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-mono] [\-\-install]
+[\-\-visual \fIvisual\fP]
+[\-\-clock \fIfloat\fP]
+[\-\-noise]
+[\-\-fps]
.SH DESCRIPTION
The
.I pong
.I pong
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-mono
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-mono
If on a color display, pretend we're on a monochrome display.
.TP 8
-.B \-install
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-clock
+.B \-\-clock
The score of the game will be the current time.
.TP 8
-.B \-noise \fIfloat\fP
+.B \-\-noise \fIfloat\fP
How noisy the video signal should be (between 0.0 and 4.0 or so).
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.TP 8
-.B (\-p1 | \-p2) \fImode\fP
+.B (\-p1 | \-\-p2) \fImode\fP
Set a player to either \fIai\fP, \fImouse\fP, \fItablet\fP, \fIkbleft\fP (for W and S), or
\fIkbright\fP (or just \fIkb\fP, for arrow keys).
.SH ENVIRONMENT
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH X RESOURCES
Notable X resources supported include the following which correspond
to standard TV controls:
pyro \- simulate fireworks
.SH SYNOPSIS
.B pyro
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-count \fIinteger\fP] [\-frequency \fIinteger\fP] [\-scatter \fIinteger\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP] [\-\-foreground \fIcolor\fP]
+[\-\-background \fIcolor\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-mono] [\-\-install] [\-\-visual \fIvisual\fP] [\-\-count \fIinteger\fP] [\-\-frequency \fIinteger\fP] [\-\-scatter \fIinteger\fP]
+[\-\-fps]
.SH DESCRIPTION
The \fIpyro\fP program simulates fireworks, in a way similar to a Macintosh
program of the same name.
.I pyro
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-mono
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-mono
If on a color display, pretend we're on a monochrome display.
.TP 8
-.B \-install
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-count \fIinteger\fP
+.B \-\-count \fIinteger\fP
How many particles should be allowed on the screen at once. Default 600.
.TP 8
-.B \-frequency \fIinteger\fP
+.B \-\-frequency \fIinteger\fP
How often new missiles should launch. Default 30.
.TP 8
-.B \-scatter \fIinteger\fP
+.B \-\-scatter \fIinteger\fP
How many particles should appear when a missile explodes. Default 100.
The actual number used is between \fIN\fP and \fIN+(N/2)\fP.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
qix \- bounce colored lines around a window
.SH SYNOPSIS
.B qix
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-segments \fIint\fP] [\-spread \fIpixels\fP] [\-size \fIpixels\fP] [\-count \fIint\fP] [\-color-shift \fIdegrees\fP] [\-delay \fIusecs\fP] [\-random] [\-linear] [\-solid] [\-hollow] [\-xor] [\-no\-xor] [\-transparent] [\-non\-transparent] [\-additive] [\-subtractive] [\-poly \fIint\fP] [\-gravity] [\-no\-gravity]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP] [\-\-foreground \fIcolor\fP]
+[\-\-background \fIcolor\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-mono] [\-\-install] [\-\-visual \fIvisual\fP] [\-\-segments \fIint\fP] [\-\-spread \fIpixels\fP] [\-\-size \fIpixels\fP] [\-\-count \fIint\fP] [\-\-color-shift \fIdegrees\fP] [\-\-delay \fIusecs\fP] [\-\-random] [\-\-linear] [\-\-solid] [\-\-hollow] [\-\-xor] [\-\-no\-xor] [\-\-transparent] [\-\-non\-transparent] [\-\-additive] [\-\-subtractive] [\-\-poly \fIint\fP] [\-\-gravity] [\-\-no\-gravity]
+[\-\-fps]
.SH DESCRIPTION
The \fIqix\fP program bounces a series of line segments around its window.
This is truly the swiss army chainsaw of qix programs. If you know of one
.I qix
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-mono
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-mono
If on a color display, pretend we're on a monochrome display.
.TP 8
-.B \-install
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-segments \fIinteger\fP
+.B \-\-segments \fIinteger\fP
How many line segments should be drawn. Default 50.
.TP 8
-.B \-spread \fIinteger\fP
+.B \-\-spread \fIinteger\fP
How far apart the endpoints of one segment should be from the next.
Default 8.
.TP 8
-.B \-size \fIinteger\fP
+.B \-\-size \fIinteger\fP
The maximum distance one endpoint of a segment is allowed to be from
the opposite end of that segment. Default 0, meaning unlimited.
.TP 8
-.B \-count \fIinteger\fP
+.B \-\-count \fIinteger\fP
How many qixes to draw. Default 1.
.TP 8
-.B \-color\-shift \fIdegrees\fP
+.B \-\-color\-shift \fIdegrees\fP
If on a color display, the color of the line segments will cycle through
the spectrum. This specifies how far the hue of each segment should be
from the next, in degrees on the HSV wheel. Default 3.
.TP 8
-.B \-delay \fImicroseconds\fP
+.B \-\-delay \fImicroseconds\fP
How much of a delay should be introduced between steps of the animation.
Default 10000, or about 0.01 seconds.
.TP 8
-.B \-random
+.B \-\-random
The \fIqix\fP will wander around the screen semi-randomly. This is the
default.
.TP 8
-.B \-linear
-The opposite of \fI\-random\fP: the \fIqix\fP will travel in straight lines
+.B \-\-linear
+The opposite of \fI\-\-random\fP: the \fIqix\fP will travel in straight lines
until it reaches a wall, and then it will bounce.
.TP 8
-.B \-solid
+.B \-\-solid
If this is specified, then the area between the line segments will be filled
in with the appropriate color, instead of the \fIqix\fP simply being composed
of one-pixel-wide line segments. This option looks really good in color.
.TP 8
-.B \-hollow
-The opposite of \fI\-solid\fP; this is the default.
+.B \-\-hollow
+The opposite of \fI\-\-solid\fP; this is the default.
.TP 8
-.B \-xor
+.B \-\-xor
If this is specified, then qix segments will be drawn and erased with xor,
instead of being drawn in some color and erased in the background color.
-This implies \fI\-mono\fP, in that only two colors can be used.
+This implies \fI\-\-mono\fP, in that only two colors can be used.
.TP 8
-.B \-transparent
-If this is specified, and \fI\-count\fP is greater than 1, then each qix
+.B \-\-transparent
+If this is specified, and \fI\-\-count\fP is greater than 1, then each qix
will be drawn in one color, and when they overlap, the colors will be mixed.
-This looks best in conjunction with \fI\-solid\fP.
+This looks best in conjunction with \fI\-\-solid\fP.
.TP 8
-.B \-non\-transparent
-Turns off \fI\-transparent\fP.
+.B \-\-non\-transparent
+Turns off \fI\-\-transparent\fP.
.TP 8
-.B \-additive
-If \fI\-transparent\fP is specified, then this option means that the colors
+.B \-\-additive
+If \fI\-\-transparent\fP is specified, then this option means that the colors
will be mixed using an additive color model, as if the qixes were projected
light. This is the default.
.TP 8
-.B \-subtractive
-If \fI\-transparent\fP is specified, then this option means that the
+.B \-\-subtractive
+If \fI\-\-transparent\fP is specified, then this option means that the
colors will be mixed using a subtractive color model, as if the qixes were
translucent filters.
.TP 8
-.B \-poly \fIint\fP
+.B \-\-poly \fIint\fP
How many vertices each qix-line should have: the default is 2, meaning the
traditional qix line shape. Three will yield triangles, and so on.
.TP 8
-.B \-gravity
+.B \-\-gravity
.TP 8
-.B \-no\-gravity
+.B \-\-no\-gravity
Whether there should be downward attraction. For example, the
options
-.B \-gravity \-linear
+.B \-\-gravity \-\-linear
will make everything move in nice smooth parabolas.
Gravity is off by default.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
.SH AUTHOR
Jamie Zawinski <jwz@jwz.org>, 13-aug-92.
-Thanks to Ariel Scolnicov for the \-poly and \-gravity options.
+Thanks to Ariel Scolnicov for the \-\-poly and \-\-gravity options.
rd-bomb \- reaction/diffusion textures
.SH SYNOPSIS
.B rd-bomb
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP]
-[\-background \fIcolor\fP] [\-window] [\-root] [\-install]
-[\-visual \fIvisual\fP] [\-width \fIn\fP] [\-height \fIn\fP]
-[\-reaction \fIn\fP] [\-diffusion \fIn\fP]
-[\-size \fIf\fP] [\-speed \fIf\fP] [\-delay \fImillisecs\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP] [\-\-foreground \fIcolor\fP]
+[\-\-background \fIcolor\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-install]
+[\-\-visual \fIvisual\fP] [\-\-width \fIn\fP] [\-\-height \fIn\fP]
+[\-\-reaction \fIn\fP] [\-\-diffusion \fIn\fP]
+[\-\-size \fIf\fP] [\-\-speed \fIf\fP] [\-\-delay \fImillisecs\fP]
+[\-\-fps]
.SH DESCRIPTION
The \fIrd-bomb\fP program draws reaction/diffusion textures.
.I rd-bomb
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-install
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-width \fIn\fP
+.B \-\-width \fIn\fP
.TP 8
-.B \-height \fIn\fP
+.B \-\-height \fIn\fP
Specify the size of the tile, in pixels.
.TP 8
-.B \-reaction \fIn\fP
+.B \-\-reaction \fIn\fP
.TP 8
-.B \-diffusion \fIn\fP
+.B \-\-diffusion \fIn\fP
These are constants in the equations that effect its visual nature.
Each may be one of 0, 1, or 2. Default is -1: these constants are
chosen randomly.
.TP 8
-.B \-radius \fIn\fP
+.B \-\-radius \fIn\fP
Size of the seed.
.TP 8
-.B \-size \fIf\fP
+.B \-\-size \fIf\fP
What fraction of the window is actively drawn, a floating point number
between 0 (exclusive) and 1 (inclusive). Default is 1.0.
.TP 8
-.B \-speed \fIf\fP
+.B \-\-speed \fIf\fP
When a fraction of the screen is active, the active area moves at this
rate (a floating point number). Default is zero. Suggested value: 1.0.
.TP 8
-.B \-delay \fImillisecs\fP
+.B \-\-delay \fImillisecs\fP
How many milliseconds to delay between frames; default 1, or
about 1/1000th of a second.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH HISTORY
The code is derived from the 'd' mode of the "Bomb" visual musical
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1),
#endif
#ifdef HAVE_GDK_PIXBUF
-# include <gdk-pixbuf-xlib/gdk-pixbuf-xlib.h>
-#endif /* HAVE_GDK_PIXBUF */
+# include <gdk-pixbuf/gdk-pixbuf.h>
+# ifdef HAVE_GDK_PIXBUF_XLIB
+# include <gdk-pixbuf-xlib/gdk-pixbuf-xlib.h>
+# endif
+#endif
#if (__GNUC__ >= 4)
# pragma GCC diagnostic pop
if (st->fade_frames >= (st->target_frames / 2) - st->fps)
st->fade_frames = 0;
-# ifdef HAVE_GDK_PIXBUF
+# ifdef HAVE_GDK_PIXBUF_XLIB
+ /* Aug 2022: nothing seems to go wrong if we don't do this?
+ gtk-2.24.33, gdk-pixbuf 2.42.8. */
{
Window root;
int x, y;
g_type_init();
# endif
}
-# else /* !HAVE_GDK_PIXBUF */
-# error GDK_PIXBUF is required
-# endif /* !HAVE_GDK_PIXBUF */
+# endif /* !HAVE_GDK_PIXBUF_XLIB */
XGetWindowAttributes (dpy, st->window, &st->xgwa);
ripples \- interference patterns.
.SH SYNOPSIS
.B ripples
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-duration \fIsecs\fP]
-[\-rate \fInumber\fP]
-[\-fluidity \fInumber\fP]
-[\-light \fInumber\fP]
-[\-water]
-[\-stir]
-[\-oily]
-[\-grayscale]
-[\-colors \fInumber\fP]
-[\-no-shm]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-duration \fIsecs\fP]
+[\-\-rate \fInumber\fP]
+[\-\-fluidity \fInumber\fP]
+[\-\-light \fInumber\fP]
+[\-\-water]
+[\-\-stir]
+[\-\-oily]
+[\-\-grayscale]
+[\-\-colors \fInumber\fP]
+[\-\-no-shm]
+[\-\-fps]
.SH DESCRIPTION
This draws rippling interference patterns like splashing water. With the
-water option, it manipulates your desktop image to look like something is
dripping into it.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 50000 (0.05 seconds.).
.TP 8
-.B \-duration \fIseconds\fP
+.B \-\-duration \fIseconds\fP
How long to run before loading a new image. Default 120 seconds.
.TP 8
-.B \-rate \fInumber\fP
+.B \-\-rate \fInumber\fP
Drizzle. 1 - 100. Default: 5.
.TP 8
-.B \-fluidity \fInumber\fP
+.B \-\-fluidity \fInumber\fP
Small Drops. 0 - 16. Default: 6.
.TP 8
-.B \-light \fInumber\fP
+.B \-\-light \fInumber\fP
Lighting Effect. 0 - 8. Default: 0.
.TP 8
-.B \-water | \-no-water
+.B \-\-water | \-\-no-water
Grab Screen Image. Boolean.
.TP 8
-.B \-stir | \-no-stir
+.B \-\-stir | \-\-no-stir
Moving Splashes. Boolean.
.TP 8
-.B \-oily | \-no-oily
+.B \-\-oily | \-\-no-oily
Psychedelic Colors. Boolean.
.TP 8
-.B \-grayscale
+.B \-\-grayscale
Convert the screen image to grayscale.
Ignored if we don't grab the screen image or if our screen doesn't have
enough color depth.
.TP 8
-.B \-colors \fInumber\fP
+.B \-\-colors \fInumber\fP
Colors Two. Default: 200.
.TP 8
-.B \-shm | \-no-shm
+.B \-\-shm | \-\-no-shm
Use Shared Memory. Boolean.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
rocks \- animation of flying through an asteroid field
.SH SYNOPSIS
.B rocks
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-ncolors \fIn\fP] [\-install] [\-visual \fIvisual\fP] [\-count \fIinteger\fP] [\-delay \fIusecs\fP] [\-speed \fIinteger\fP] [\-norotate] [\-nomove] [\-3d]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP] [\-\-foreground \fIcolor\fP]
+[\-\-background \fIcolor\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-mono] [\-\-ncolors \fIn\fP] [\-\-install] [\-\-visual \fIvisual\fP] [\-\-count \fIinteger\fP] [\-\-delay \fIusecs\fP] [\-\-speed \fIinteger\fP] [\-\-norotate] [\-\-nomove] [\-3d]
+[\-\-fps]
.SH DESCRIPTION
The \fIrocks\fP program draws an animation of an asteroid field moving past
the observer (or vice versa). Sometimes the observer picks up spin on Z axis.
.I rocks
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-mono
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-mono
Make all the rocks the same color.
.TP 8
-.B \-ncolors colors
+.B \-\-ncolors colors
How many different colors to use. Default 5. Colors are chosen randomly.
.TP 8
-.B \-install
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-count \fIinteger\fP
+.B \-\-count \fIinteger\fP
Maximum number of rocks to draw on the screen at once. Default 100.
.TP 8
-.B \-speed \fIinteger\fP
+.B \-\-speed \fIinteger\fP
A measure of the speed with which the observer and the rocks pass each other,
from 1 to 100. Default 100, meaning ``very fast.'' If you're on a slow
display connection (the animation looks jerky) then try making this number
smaller, and/or decreasing the number of rocks.
.TP 8
-.B \-delay \fImicroseconds\fP
+.B \-\-delay \fImicroseconds\fP
Number of microseconds to delay between each frame. Default 50000, meaning
-about 1/20th second. Compare and contrast with \fI\-speed\fP, above.
+about 1/20th second. Compare and contrast with \fI\-\-speed\fP, above.
.TP 8
-.B \-norotate
+.B \-\-norotate
Don't rotate the observer; just fly through the field on the level.
.TP 8
-.B \-nomove
+.B \-\-nomove
Don't turn the observer; just fly straight ahead through the field.
.TP 8
.B \-3d
Do red/blue 3d separations: if you look at the screen with 3d glasses,
the rocks will be \fIjumping\fP right \fIout\fP at you. Oooooh, scaaary!
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
rorschach \- simulate ink-blot patterns
.SH SYNOPSIS
.B rorschach
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-iterations \fIinteger\fP] [\-offset \fIinteger\fP] [\-xsymmetry] [\-ysymmetry] [\-erase\-speed \fIusecs\fP] [\-delay \fIsecs\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP] [\-\-foreground \fIcolor\fP]
+[\-\-background \fIcolor\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-mono] [\-\-install] [\-\-visual \fIvisual\fP] [\-\-iterations \fIinteger\fP] [\-\-offset \fIinteger\fP] [\-\-xsymmetry] [\-\-ysymmetry] [\-\-erase\-speed \fIusecs\fP] [\-\-delay \fIsecs\fP]
+[\-\-fps]
.SH DESCRIPTION
The \fIrorschach\fP program draws random patterns reminiscent of the
psychological test of same name.
.I rorschach
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-mono
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-mono
If on a color display, pretend we're on a monochrome display.
.TP 8
-.B \-install
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-iterations \fIinteger\fP
+.B \-\-iterations \fIinteger\fP
How many dots should be drawn each time. Default 4000.
.TP 8
-.B \-offset \fIinteger\fP
+.B \-\-offset \fIinteger\fP
How far apart the dots should be. Default 4 pixels.
.TP 8
-.B \-xsymmetry
+.B \-\-xsymmetry
Whether the images should be horizontally symmetrical. Default true.
.TP 8
-.B \-ysymmetry
+.B \-\-ysymmetry
Whether the images should be vertically symmetrical. Default false.
.TP 8
-.B \-erase\-speed \fIusecs\fP
+.B \-\-erase\-speed \fIusecs\fP
This controls the speed at which the screen will be erased. (Delay between
erasing of individual lines.)
.TP 8
-.B \-delay \fIseconds\fP
+.B \-\-delay \fIseconds\fP
This sets the number of seconds that the figure will be on the screen.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH BUGS
May call your sanity into question.
.SH SEE ALSO
rotor \- screen saver.
.SH SYNOPSIS
.B rotor
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-count \fInumber\fP]
-[\-cycles \fInumber\fP]
-[\-delay \fInumber\fP]
-[\-ncolors \fInumber\fP]
-[\-size \fInumber\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-count \fInumber\fP]
+[\-\-cycles \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-ncolors \fInumber\fP]
+[\-\-size \fInumber\fP]
+[\-\-fps]
.SH DESCRIPTION
This draws a line segment moving along a complex spiraling curve.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-count \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-count \fInumber\fP
Count. 0 - 20. Default: 4.
.TP 8
-.B \-cycles \fInumber\fP
+.B \-\-cycles \fInumber\fP
Length. 2 - 100. Default: 20.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 10000 (0.01 seconds.).
.TP 8
-.B \-ncolors \fInumber\fP
+.B \-\-ncolors \fInumber\fP
Number of Colors. Default: 200.
.TP 8
-.B \-size \fInumber\fP
+.B \-\-size \fInumber\fP
Size. -50 - 50. Default: -6.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
rotzoomer \- animated rotations and scalings of portions of the screen
.SH SYNOPSIS
.B rotzoomer
-[\-display \fIhost:display.screen\fP]
-[\-move | \-no\-move]
-[\-delay \fImillisecs\fP]
-[\-duration \fIsecs\fP]
-[\-n \fIcount\fP]
-[\-shm | \-no\-shm]
-[\-window] [\-root] [\-install] [\-visual \fIvisual\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-move | \-\-no\-move]
+[\-\-delay \fImillisecs\fP]
+[\-\-duration \fIsecs\fP]
+[\-\-n \fIcount\fP]
+[\-\-shm | \-\-no\-shm]
+[\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-install] [\-\-visual \fIvisual\fP]
+[\-\-fps]
.SH DESCRIPTION
The \fIrotzoomer\fP program grabs an image, then picks
rectangles and draws scaled and rotated animations of that
.I rotzoomer
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-install
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-delay \fImilliseconds\fP
+.B \-\-delay \fImilliseconds\fP
How much of a delay should be introduced between steps of the animation.
Default 10, or about 1/100th second.
.TP 8
-.B \-duration \fIseconds\fP
+.B \-\-duration \fIseconds\fP
How long to run before loading a new image. Default 120 seconds.
.TP 8
-.B \-move
+.B \-\-move
Make the rectangles should wander around the screen.
.TP 8
-.B \-no\-move
+.B \-\-no\-move
Make the rectangles be stationary. This is the default.
.TP 8
-.B \-n \fIcount\fP
+.B \-\-n \fIcount\fP
How many rectangles to animate simultaneously. Default 2.
.TP 8
-.B \-no\-shm
+.B \-\-no\-shm
Disable use of the SHM extension, even if it appears to be available.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1),
scooter \- shows a journey through space tunnel and stars
.SH SYNOPSIS
.B scooter
-[\-display \fIhost:display.screen\fP]
-[\-mono]
-[\-delay \fImillisecs\fP]
-[\-cycles \fIcycles\fP]
-[\-count \fIcount\fP]
-[\-size \fIsize\fP]
-[\-ncolors \fIcolors\fP]
-[\-window] [\-root] [\-install | \-noinstall] [\-visual \fIvisual\fP]
-[\-fps | \-no\-fps]
-[\-pair]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-mono]
+[\-\-delay \fImillisecs\fP]
+[\-\-cycles \fIcycles\fP]
+[\-\-count \fIcount\fP]
+[\-\-size \fIsize\fP]
+[\-\-ncolors \fIcolors\fP]
+[\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-install | \-\-noinstall] [\-\-visual \fIvisual\fP]
+[\-\-fps | \-\-no\-fps]
+[\-\-pair]
.SH DESCRIPTION
\fIscooter\fP is a screensaver that shows endless journey through space tunnel and stars.
.SH OPTIONS
.I scooter
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-install
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-delay \fImilliseconds\fP
+.B \-\-delay \fImilliseconds\fP
How much of a delay should be introduced between steps of the animation.
Default 10, or about 1/100th second.
.TP 8
-.B \-cycles \fIcycles\fP
+.B \-\-cycles \fIcycles\fP
How fast/slow the screensaver is. \fIcycles\fP takes number of cycles. The default is 5 cycles.
.TP 8
-.B \-count \fIcount\fP
+.B \-\-count \fIcount\fP
Specifies how many doors in a tunnel can be rendered. Minimum is 4. Default is 24.
.TP 8
-.B \-size \fIsize\fP
+.B \-\-size \fIsize\fP
Specifies how many stars outside the tunnel can be rendered. Default is 100.
.TP 8
-.B \-ncolors \fIcolors\fP
-Specifies number of colors. A number that is less than or equals 2 means monochrome. \-mono achieves the same thing.
+.B \-\-ncolors \fIcolors\fP
+Specifies number of colors. A number that is less than or equals 2 means monochrome. \-\-mono achieves the same thing.
.TP 8
-.B \-pair
+.B \-\-pair
Start screensaver in pairs (Not recommended)
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1),
-/* xscreensaver, Copyright (c) 1992-2021 Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright © 1992-2022 Jamie Zawinski <jwz@jwz.org>
*
* Permission to use, copy, modify, distribute, and sell this software and its
* documentation for any purpose is hereby granted without fee, provided that
of your screen saver module. See .../hacks/config/README for details.
*/
+
+/* Flow of control for the "screenhack" API:
+
+ main
+ xscreensaver_function_table->setup_cb => none
+ XtAppInitialize
+ pick_visual
+ init_window
+ run_screenhack_table (loops forever)
+ ! xscreensaver_function_table.init_cb => HACK_init (once)
+ usleep_and_process_events
+ ! xscreensaver_function_table.event_cb => HACK_event
+ ! xscreensaver_function_table.draw_cb => HACK_draw
+
+ The "xlockmore" API (which is also the OpenGL API) acts like a screenhack
+ but then adds another layer underneath that, before eventually running the
+ hack's methods. Flow of control for the "xlockmore" API:
+
+ main
+ + xscreensaver_function_table->setup_cb => xlockmore_setup (opt handling)
+ XtAppInitialize
+ pick_visual
+ init_window
+ run_screenhack_table (loops forever)
+ ! xscreensaver_function_table.init_cb => xlockmore_init (once)
+ usleep_and_process_events
+ ! xscreensaver_function_table.event_cb => xlockmore_event
+ + xlockmore_function_table.hack_handle_events => HACK_handle_event
+ ! xscreensaver_function_table.draw_cb => xlockmore_draw
+ + xlockmore_function_table.hack_init => init_HACK
+ + init_GL (eglCreateContext or glXCreateContext)
+ + xlockmore_function_table.hack_draw => draw_HACK
+ */
+
#define DEBUG_PAIR
#include <stdio.h>
/* Notice when the user has requested a different visual or colormap
- on a pre-existing window (e.g., "-root -visual truecolor" or
- "-window-id 0x2c00001 -install") and complain, since when drawing
+ on a pre-existing window (e.g., "--root --visual truecolor" or
+ "--window-id 0x2c00001 --install") and complain, since when drawing
on an existing window, we have no choice about these things.
*/
static void
sprintf (win, "window 0x%lx", (unsigned long) window);
if (window_p)
- sprintf (why, "-window-id 0x%lx", (unsigned long) window);
+ sprintf (why, "--window-id 0x%lx", (unsigned long) window);
else
- strcpy (why, "-root");
+ strcpy (why, "--root");
if (visual_string && *visual_string)
{
shadebobs \- oscillating vapor trails.
.SH SYNOPSIS
.B shadebobs
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-ncolors \fInumber\fP]
-[\-count \fInumber\fP]
-[\-delay \fInumber\fP]
-[\-cycles \fInumber\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-ncolors \fInumber\fP]
+[\-\-count \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-cycles \fInumber\fP]
+[\-\-fps]
.SH DESCRIPTION
This draws smoothly-shaded oscillating oval patterns, that look something
like vapor trails or neon tubes.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-ncolors \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-ncolors \fInumber\fP
Number of Colors. Default: 64.
.TP 8
-.B \-count \fInumber\fP
+.B \-\-count \fInumber\fP
Count. 0 - 20. Default: 4.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 5000 (0.005 seconds.).
.TP 8
-.B \-cycles \fInumber\fP
+.B \-\-cycles \fInumber\fP
Duration. 0 - 100. Default: 10.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
sierpinski \- draws Sierpinski triangle fractals
.SH SYNOPSIS
.B sierpinski
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP] [\-delay \fImicroseconds\fP] [\-cycles \fIinteger\fP] [\-count \fIinteger\fP]
+[\-\-display \fIhost:display.screen\fP] [\-\-foreground \fIcolor\fP]
+[\-\-background \fIcolor\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-mono] [\-\-install] [\-\-visual \fIvisual\fP] [\-\-ncolors \fIinteger\fP] [\-\-delay \fImicroseconds\fP] [\-\-cycles \fIinteger\fP] [\-\-count \fIinteger\fP]
-[\-fps]
+[\-\-fps]
.SH DESCRIPTION
The \fIsierpinski\fP program draws Sierpinski triangle fractals.
.SH OPTIONS
.I sierpinski
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-mono
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-mono
If on a color display, pretend we're on a monochrome display.
.TP 8
-.B \-install
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-ncolors \fIinteger\fP
+.B \-\-ncolors \fIinteger\fP
How many colors should be used (if possible). Default 64.
The colors are chosen randomly.
.TP 8
-.B \-cycles \fIinteger\fP
+.B \-\-cycles \fIinteger\fP
.TP 8
-.B \-count \fIinteger\fP
+.B \-\-count \fIinteger\fP
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1),
slidescreen \- permute the screen image like an 8-puzzle
.SH SYNOPSIS
.B slidescreen
-[\-display \fIhost:display.screen\fP]
-[\-background \fIcolor\fP]
-[\-grid-size \fIpixels\fP]
-[\-ibw \fIpixels\fP]
-[\-increment \fIpixels\fP]
-[\-delay \fIusecs\fP]
-[\-delay2 \fIusecs\fP]
-[\-duration \fIsecs\fP]
-[\-window]
-[\-root]
-[\-install]
-[\-visual \fIvisual\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-background \fIcolor\fP]
+[\-\-grid-size \fIpixels\fP]
+[\-\-ibw \fIpixels\fP]
+[\-\-increment \fIpixels\fP]
+[\-\-delay \fIusecs\fP]
+[\-\-delay2 \fIusecs\fP]
+[\-\-duration \fIsecs\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-install]
+[\-\-visual \fIvisual\fP]
+[\-\-fps]
.SH DESCRIPTION
The \fIslidescreen\fP program takes an image, divides it into
a grid, deletes a random square of that grid, and then randomly slides
.I slidescreen
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-install
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-grid-size \fIpixels\fP
+.B \-\-grid-size \fIpixels\fP
The size of the grid cells. Default 70 pixels.
.TP 8
-.B \-ibw \fIpixels\fP
+.B \-\-ibw \fIpixels\fP
The size of the "gutter" between grid cells. Default 4 pixel.
.TP 8
-.B \-increment \fIpixels\fP
+.B \-\-increment \fIpixels\fP
How many pixels by which a piece should be moved when sliding to a new
location. Default 10 pixels.
.TP 8
-.B \-delay \fImicroseconds\fP
+.B \-\-delay \fImicroseconds\fP
How much of a delay should be introduced between steps of the animation of
the motion of each segment. Default 50000, which is 0.05 seconds. This
-is closely related to the \fI\-increment\fP parameter.
+is closely related to the \fI\-\-increment\fP parameter.
.TP 8
-.B \-delay2 \fImicroseconds\fP
+.B \-\-delay2 \fImicroseconds\fP
How much of a delay should be introduced between the end of the motion of
one segment and the beginning of the motion of another. Default 1000000,
which is one second.
.TP 8
-.B \-duration \fIseconds\fP
+.B \-\-duration \fIseconds\fP
How long to run before loading a new image. Default 120 seconds.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1),
slip \- sucks your screen into a jet engine
.SH SYNOPSIS
.B slip
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP]
-[\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install]
-[\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP]
-[\-iterations \fIinteger\fP] [\-points \fIinteger\fP]
-[\-delay \fImicroseconds\fP] [\-delay2 \fImicroseconds\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP] [\-\-foreground \fIcolor\fP]
+[\-\-background \fIcolor\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-mono] [\-\-install]
+[\-\-visual \fIvisual\fP] [\-\-ncolors \fIinteger\fP]
+[\-\-iterations \fIinteger\fP] [\-\-points \fIinteger\fP]
+[\-\-delay \fImicroseconds\fP] [\-\-delay2 \fImicroseconds\fP]
+[\-\-fps]
.SH DESCRIPTION
The \fIslip\fP program does lots of blits and chews up an image.
.I slip
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-mono
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-mono
If on a color display, pretend we're on a monochrome display.
.TP 8
-.B \-install
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-ncolors \fIinteger\fP
+.B \-\-ncolors \fIinteger\fP
How many colors should be used (if possible). Default 200.
The colors used cycle through the hue, making N stops around
the color wheel.
.TP 8
-.B \-count \fIinteger\fP
+.B \-\-count \fIinteger\fP
How many whooziwhatsis to generate. Default 35.
.TP 8
-.B \-cycles \fIinteger\fP
+.B \-\-cycles \fIinteger\fP
How long to frobnicate. Default 50.
.TP 8
-.B \-delay \fImicroseconds\fP
+.B \-\-delay \fImicroseconds\fP
How long we should wait between drawing each step. Default 50000,
or about 1/20th second.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1),
speedmine \- simulates speeding down a rocky mineshaft, or a funky dancing worm
.SH SYNOPSIS
.B speedmine
-[\-display \fIhost:display.screen\fP] [\-root] [\-window]
-[\-install] [\-noinstall] [\-visual \fIvisual\fP] [\-wire] [\-nowire]
-[\-worm]
-[\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-darkground \fIcolor\fP] [\-lightground \fIcolor\fP] [\-tunnelend \fIcolor\fP] [\-delay \fImicroseconds\fP] [\-maxspeed \fInumber\fP] [\-thrust \fInumber\fP] [\-gravity \fInumber\fP] [\-vertigo \fInumber\fP] [\-terrain] [\-noterrain] [\-smoothness \fInumber\fP] [\-curviness \fInumber\fP] [\-twistiness \fInumber\fP] [\-widening] [\-nowidening] [\-bumps] [\-nobumps] [\-bonuses] [\-crosshair] [\-nocrosshair] [\-psychedelic] [\-nopsychedelic]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-root]
+[\-\-window]
+[\-\-window\-id \fInumber\fP]
+[\-\-install]
+[\-\-noinstall]
+[\-\-visual \fIvisual\fP]
+[\-\-wire]
+[\-\-nowire]
+[\-\-worm]
+[\-\-foreground \fIcolor\fP]
+[\-\-background \fIcolor\fP]
+[\-\-darkground \fIcolor\fP]
+[\-\-lightground \fIcolor\fP]
+[\-\-tunnelend \fIcolor\fP]
+[\-\-delay \fImicroseconds\fP]
+[\-\-maxspeed \fInumber\fP]
+[\-\-thrust \fInumber\fP]
+[\-\-gravity \fInumber\fP]
+[\-\-vertigo \fInumber\fP]
+[\-\-terrain]
+[\-\-noterrain]
+[\-\-smoothness \fInumber\fP]
+[\-\-curviness \fInumber\fP]
+[\-\-twistiness \fInumber\fP]
+[\-\-widening]
+[\-\-nowidening]
+[\-\-bumps]
+[\-\-nobumps]
+[\-\-bonuses]
+[\-\-crosshair]
+[\-\-nocrosshair]
+[\-\-psychedelic]
+[\-\-nopsychedelic]
+[\-\-fps]
.SH DESCRIPTION
.TP 8
Speedmine!
either with command-line options or X resources.
.SH OPTIONS
.TP 8
-.B \-display \fIhost:display.screen\fP
+.B \-\-display \fIhost:display.screen\fP
Specifies which X display we should use (see the section DISPLAY NAMES in
.BR X (1)
for more information about this option).
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-window
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-install
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-noinstall
+.B \-\-noinstall
Don't install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual
class, or the id number (decimal or hex) of a specific visual.
Possible choices include
is consulted to obtain the required visual.
.RE
.TP 8
-.B \-worm
+.B \-\-worm
Be a happy spastic worm instead of a tunnel.
.TP 8
-.B \-wire
+.B \-\-wire
Specifies that the tunnel/worm should always be rendered in wireframe style.
.TP 8
-.B \-nowire
+.B \-\-nowire
Specifies that the tunnel/worm should be rendered normally. Note that
tunnel rendering may still temporarily switch to wireframe style when
a wireframe bonus is hit, if
.B bonuses
are enabled.
.TP 8
-.B \-foreground \fIcolor\fP
+.B \-\-foreground \fIcolor\fP
Specifies the default foreground color.
.TP 8
-.B \-background \fIcolor\fP
+.B \-\-background \fIcolor\fP
Specifies the default background color.
.TP 8
-.B \-darkground \fIcolor\fP
+.B \-\-darkground \fIcolor\fP
Specifies the color of the darkest portions of the ground (or the
worm's belly.) The ground/belly is colored by a gradient between
.B darkground
and
.B lightground.
.TP 8
-.B \-lightground \fIcolor\fP
+.B \-\-lightground \fIcolor\fP
Specifies the color of the lightest portions of the ground/belly.
The ground/belly is colored by a gradient between
.B darkground
and
.B lightground.
.TP 8
-.B \-tunnelend \fIcolor\fP
+.B \-\-tunnelend \fIcolor\fP
Specifies the color of the light at the end of the tunnel.
.TP 8
-.B \-delay \fImicroseconds\fP
+.B \-\-delay \fImicroseconds\fP
Specifies the delay between drawing successive frames. If you do not specify
.BR -sync ,
some X servers may batch up several drawing operations together,
producing a less smooth effect. This is more likely to happen
in monochrome mode (on monochrome servers or when
-.B \-mono
+.B \-\-mono
is specified).
.TP 8
.B -maxspeed \fInumber\fP
Specifies that a normal colormap should be used, with muted walls and a
grey road.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH WARNING
Speedworm is a trained professional. Do not try this at home.
.B vertigo
above the defaults may have short-term psychological side effects including
hyperactivity and attention deficiency.
+.SH ENVIRONMENT
+.PP
+.TP 8
+.B DISPLAY
+to get the default host and display number.
+.TP 8
+.B XENVIRONMENT
+to get the name of a resource file that overrides the global resources
+stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
+.SH SEE ALSO
+.BR X (1),
+.BR xscreensaver (1)
.SH COPYRIGHT
Copyright \(co 2001, Conrad Parker. Permission to use, copy, modify,
distribute, and sell this software and its documentation for any purpose is
sphere \- draws shaded spheres
.SH SYNOPSIS
.B sphere
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP] [\-delay \fImicroseconds\fP]
+[\-\-display \fIhost:display.screen\fP] [\-\-foreground \fIcolor\fP]
+[\-\-background \fIcolor\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-mono] [\-\-install] [\-\-visual \fIvisual\fP] [\-\-ncolors \fIinteger\fP] [\-\-delay \fImicroseconds\fP]
-[\-fps]
+[\-\-fps]
.SH DESCRIPTION
The \fIsphere\fP program draws shaded spheres.
.SH OPTIONS
.I sphere
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-mono
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-mono
If on a color display, pretend we're on a monochrome display.
.TP 8
-.B \-install
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-ncolors \fIinteger\fP
+.B \-\-ncolors \fIinteger\fP
How many colors should be used (if possible). Default 64.
The colors are chosen randomly.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1),
spiral \- draws moving circular spiral patterns
.SH SYNOPSIS
.B spiral
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP] [\-delay \fImicroseconds\fP] [\-count \fIinteger\fP]
+[\-\-display \fIhost:display.screen\fP] [\-\-foreground \fIcolor\fP]
+[\-\-background \fIcolor\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-mono] [\-\-install] [\-\-visual \fIvisual\fP] [\-\-ncolors \fIinteger\fP] [\-\-delay \fImicroseconds\fP] [\-\-count \fIinteger\fP]
-[\-fps]
+[\-\-fps]
.SH DESCRIPTION
The \fIspiral\fP program draws moving circular spiral patterns
.SH OPTIONS
.I spiral
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-mono
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-mono
If on a color display, pretend we're on a monochrome display.
.TP 8
-.B \-install
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-ncolors \fIinteger\fP
+.B \-\-ncolors \fIinteger\fP
How many colors should be used (if possible). Default 64.
The colors are chosen randomly.
.TP 8
-.B \-count \fIinteger\fP
+.B \-\-count \fIinteger\fP
Default 40.
.TP 8
-.B \-cycles \fIinteger\fP
+.B \-\-cycles \fIinteger\fP
Default 350.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1),
spotlight \- move spotlight around desktop
.SH SYNOPSIS
.B spotlight
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP]
-[\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install]
-[\-visual \fIvisual\fP]
-[\-delay \fIusecs\fP]
-[\-duration \fIsecs\fP]
-[\-radius \fIpixels\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP] [\-\-foreground \fIcolor\fP]
+[\-\-background \fIcolor\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-mono] [\-\-install]
+[\-\-visual \fIvisual\fP]
+[\-\-delay \fIusecs\fP]
+[\-\-duration \fIsecs\fP]
+[\-\-radius \fIpixels\fP]
+[\-\-fps]
.SH DESCRIPTION
The \fIspotlight\fP program takes an image and exposes small sections
of it as if through a wandering spotlight beam.
.I spotlight
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-mono
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-mono
If on a color display, pretend we're on a monochrome display.
.TP 8
-.B \-install
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-delay \fImicroseconds\fP
+.B \-\-delay \fImicroseconds\fP
Slow it down.
.TP 8
-.B \-duration \fIseconds\fP
+.B \-\-duration \fIseconds\fP
How long to run before loading a new image. Default 120 seconds.
.TP 8
-.B \-radius \fIpixels\fP
+.B \-\-radius \fIpixels\fP
Radius of the spotlight in pixels.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1),
squiral \- square spirals screensaver
.SH SYNOPSIS
.B squiral
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP]
-[\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install]
-[\-noinstall] [\-visual \fIvisual\fP] [\-fill \fIpercent\fP] [-count
+[\-\-display \fIhost:display.screen\fP] [\-\-foreground \fIcolor\fP]
+[\-\-background \fIcolor\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-mono] [\-\-install]
+[\-\-noinstall] [\-\-visual \fIvisual\fP] [\-\-fill \fIpercent\fP] [-count
\fInumber\fP] [-delay \fIusec\fP] [-disorder \fIfraction\fP] [-handedness
\fIfraction\fP] [-cycle]
-[\-fps]
+[\-\-fps]
.SH DESCRIPTION
The \fIsquiral\fP program displays interacting, spiral-producing automata
.I squiral
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-mono
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-mono
If on a color display, pretend we're on a monochrome display.
.TP 8
-.B \-install
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-fill \fIpercent\fP
+.B \-\-fill \fIpercent\fP
Specify the percent (0-100) of the screen which must be filled before
the screen is cleared. 60-80 percent are good values.
.TP 8
-.B \-count \fInumber\fP
+.B \-\-count \fInumber\fP
The number of squiralies. By default, the screen width divided by 32.
.TP 8
-.B \-delay \fIusec\fP
+.B \-\-delay \fIusec\fP
The wait between steps. The default is 1000.
.TP 8
-.B \-disorder \fIfraction\fP
+.B \-\-disorder \fIfraction\fP
The fraction of the time a squiraly will choose a new direction.
The default is 0.005.
.TP 8
-.B \-handedness \fIfraction\fP
+.B \-\-handedness \fIfraction\fP
The fraction of the time a squiraly will choose to enter lefthanded
mode. 0.0 means exclusively right-handed behavior, 0.5 (the default) is
a balance between the two, and 1.0 is exclusively left-handed behaviour.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH BUGS
None known
.SH SEE ALSO
starfish \- radially-symmetric throbbing colormap-hacking graphics demo
.SH SYNOPSIS
.B starfish
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-delay \fIusecs\fP] [\-delay2 \fIsecs\fP] [\-thickness \fIpixels\fP] [\-rotation \fIdegrees\fP] [\-duration \fIseconds\fP] [\-colors \fIint\fP] [\-blob] [\-no\-blob]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP] [\-\-foreground \fIcolor\fP]
+[\-\-background \fIcolor\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-mono] [\-\-install] [\-\-visual \fIvisual\fP] [\-\-delay \fIusecs\fP] [\-\-delay2 \fIsecs\fP] [\-\-thickness \fIpixels\fP] [\-\-rotation \fIdegrees\fP] [\-\-duration \fIseconds\fP] [\-\-colors \fIint\fP] [\-\-blob] [\-\-no\-blob]
+[\-\-fps]
.SH DESCRIPTION
The \fIstarfish\fP program draws radially symmetric objects, which expand,
contract, rotate, and turn inside out. It uses these shapes to lay down a
.I starfish
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-mono
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-mono
If on a color display, pretend we're on a monochrome display.
.TP 8
-.B \-install
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-delay \fImicroseconds\fP
+.B \-\-delay \fImicroseconds\fP
How much of a delay should be introduced between steps of the animation.
Default 10000, or about 1/100th second.
.TP 8
-.B \-thickness \fIpixels\fP
+.B \-\-thickness \fIpixels\fP
How wide each color band should be. Default 0, meaning random (the chosen
value will be between 0 and 15.)
.TP 8
-.B \-rotation \fIdegrees\fP
+.B \-\-rotation \fIdegrees\fP
How quickly the objects should rotate at each step. Default 0, meaning
random (the chosen value will be between 0 and 12 degrees.)
.TP 8
-.B \-colors \fIint\fP
+.B \-\-colors \fIint\fP
How many colors to use. Default 200. The more colors, the smoother the
transitions will be, and the nicer the resultant images.
.TP 8
-.B \-duration \fIseconds\fP
+.B \-\-duration \fIseconds\fP
How long to run before choosing a new shape. Default 30 seconds.
.TP 8
-.B \-delay2 \fIseconds\fP
+.B \-\-delay2 \fIseconds\fP
When \fIduration\fP expires, how long to wait before starting a new run.
Default 5 seconds.
.TP 8
-.B \-blob
+.B \-\-blob
.TP 8
-.B \-no\-blob
+.B \-\-no\-blob
If \fIblob\fP option is specified, then the raw shapes will be shown,
instead of a field of colors generated from them.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
strange \- draws strange attractors
.SH SYNOPSIS
.B strange
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP] [\-delay \fImicroseconds\fP]
+[\-\-display \fIhost:display.screen\fP] [\-\-foreground \fIcolor\fP]
+[\-\-background \fIcolor\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-mono] [\-\-install] [\-\-visual \fIvisual\fP] [\-\-ncolors \fIinteger\fP] [\-\-delay \fImicroseconds\fP]
-[\-fps]
+[\-\-fps]
.SH DESCRIPTION
The \fIstrange\fP program draws strange attractors
.SH OPTIONS
.I strange
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-mono
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-mono
If on a color display, pretend we're on a monochrome display.
.TP 8
-.B \-install
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-ncolors \fIinteger\fP
+.B \-\-ncolors \fIinteger\fP
How many colors should be used (if possible). Default 100.
The colors are chosen randomly.
.TP 8
-.B \-points \fIinteger\fP
+.B \-\-points \fIinteger\fP
Change the number of points/iterations each frame. Default 5500. More than
6000 activates the accumulator, which makes parts of the image brighter or
darker depending on how often the attractor hits each pixel.
.TP 8
-.B \-point-size \fIinteger\fP
+.B \-\-point-size \fIinteger\fP
Changes the size of individual points. Default 1.
.TP 8
-.B \-zoom \fIfloat\fP
+.B \-\-zoom \fIfloat\fP
Zooms in or out. Default 0.9.
.TP 8
-.B \-brightness \fIfloat\fP
+.B \-\-brightness \fIfloat\fP
Adjusts the brightness for accumulator mode. Default 1.0.
.TP 8
-.B \-motion-blur \fIfloat\fP
+.B \-\-motion-blur \fIfloat\fP
Adds motion blur. Default 3.0, no motion blur is 1.0.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1),
substrate \- Grow crystal-like lines on a computational substrate
.SH SYNOPSIS
.B substrate
-[\-display \fIhost:display.screen\fP]
-[\-foreground \fIcolor\fP]
-[\-background \fIcolor\fP]
-[\-wireframe]
-[\-max\-cycles \fIcyclecount\fP]
-[\-growth\-delay \fIdelayms\fP]
-[\-initial\-cracks \fInuminitial\fP]
-[\-max\-cracks \fInummax\fP]
-[\-sand\-grains \fInumgrains\fP]
-[\-circle\-percent \fIcirclepercent\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-foreground \fIcolor\fP]
+[\-\-background \fIcolor\fP]
+[\-\-wireframe]
+[\-\-max\-cycles \fIcyclecount\fP]
+[\-\-growth\-delay \fIdelayms\fP]
+[\-\-initial\-cracks \fInuminitial\fP]
+[\-\-max\-cracks \fInummax\fP]
+[\-\-sand\-grains \fInumgrains\fP]
+[\-\-circle\-percent \fIcirclepercent\fP]
+[\-\-fps]
.SH DESCRIPTION
Lines like crystals grow on a computational substrate. A simple perpendicular
growth rule creates intricate city-like structures. Optionally, cracks may
.I substrate
accepts the following options:
.TP 8
-.B \-wireframe (Default: \fIFalse\fP)
+.B \-\-wireframe (Default: \fIFalse\fP)
Don't draw sand-painting colored effects, only make a wireframe.
.TP 8
-.B \-max\-cycles \fIcyclecount\fP (Default: \fI10000\fP)
+.B \-\-max\-cycles \fIcyclecount\fP (Default: \fI10000\fP)
Maximum number of growth cycles before restarting. The higher this is,
the more complex the art.
.TP 8
-.B \-growth\-delay \fIdelayms\fP (Default: \fI18000\fP)
+.B \-\-growth\-delay \fIdelayms\fP (Default: \fI18000\fP)
Delay in ms between growth cycles. More delay, slower (but smoother
and less CPU intensive)
art.
.TP 8
-.B \-initial\-cracks \fInuminitial\fP (Default: \fI3\fP)
+.B \-\-initial\-cracks \fInuminitial\fP (Default: \fI3\fP)
Initial number of cracks in the substrate
.TP 8
-.B \-max\-cracks \fInummax\fP (Default: \fI100\fP)
+.B \-\-max\-cracks \fInummax\fP (Default: \fI100\fP)
Maximum number of cracks in the substrate at a single time
.TP 8
-.B \-sand\-grains \fInumgrains\fP (Default: \fI64\fP)
+.B \-\-sand\-grains \fInumgrains\fP (Default: \fI64\fP)
Number of sand grains dropped during coloring. More grains cause
a denser colour but use more cpu power.
.TP 8
-.B \-circle-percent \fIcirclepercent\fP (Default: \fI0\fP)
+.B \-\-circle-percent \fIcirclepercent\fP (Default: \fI0\fP)
The percentage of the cracks will be circular.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
+.TP 8
+.B \-\-visual \fIvisual\fP
+Specify which visual to use. Legal values are the name of a visual class,
+or the id number (decimal or hex) of a specific visual.
+.TP 8
+.B \-\-window
+Draw on a newly-created window. This is the default.
+.TP 8
+.B \-\-root
+Draw on the root window.
+.TP 8
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
.SH ENVIRONMENT
.PP
.TP 8
.B XENVIRONMENT
to get the name of a resource file that overrides the global
resources stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
swirl \- draws swirly color-cycling patterns
.SH SYNOPSIS
.B swirl
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP]
-[\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install]
-[\-visual \fIvisual\fP]
-[\-ncolors \fIinteger\fP]
-[\-delay \fImicroseconds\fP]
-[\-count \fIinteger\fP]
+[\-\-display \fIhost:display.screen\fP] [\-\-foreground \fIcolor\fP]
+[\-\-background \fIcolor\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-mono] [\-\-install]
+[\-\-visual \fIvisual\fP]
+[\-\-ncolors \fIinteger\fP]
+[\-\-delay \fImicroseconds\fP]
+[\-\-count \fIinteger\fP]
-[\-fps]
+[\-\-fps]
.SH DESCRIPTION
The \fIswirl\fP program draws swirly color-cycling patterns.
.SH OPTIONS
.I swirl
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-mono
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-mono
If on a color display, pretend we're on a monochrome display.
.TP 8
-.B \-install
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-ncolors \fIinteger\fP
+.B \-\-ncolors \fIinteger\fP
How many colors should be used (if possible). Default 200.
.TP 8
-.B \-count \fIinteger\fP
+.B \-\-count \fIinteger\fP
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1),
.B -help
Prints a short usage message.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.PP
.SH AUTHOR
tessellimage \- Converts an image to triangles using Delaunay tessellation.
.SH SYNOPSIS
.B tessellimage
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-duration \fInumber\fP]
-[\-duration2 \fInumber\fP]
-[\-max-depth \fInumber\fP]
-[\-max-resolution \fIpixels\fP]
-[\-no-outline]
-[\-no-fill-screen]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-duration \fInumber\fP]
+[\-\-duration2 \fInumber\fP]
+[\-\-max-depth \fInumber\fP]
+[\-\-max-resolution \fIpixels\fP]
+[\-\-no-outline]
+[\-\-no-fill-screen]
+[\-\-fps]
.SH DESCRIPTION
Converts an image to triangles using Delaunay tessellation, and animates
the result at various depths. More triangles are allocated to visually
pixels that have the largest change in color/brightness.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 30000 (0.03 seconds).
.TP 8
-.B \-duration \fInumber\fP
+.B \-\-duration \fInumber\fP
Length of time until loading a new image. Default: 2 minutes.
.TP 8
-.B \-duration2 \fInumber\fP
+.B \-\-duration2 \fInumber\fP
Length of time until increasing or decreasing the triangulation depth.
Default: 0.4 seconds.
.TP 8
-.B \-max-depth \fInumber\fP
+.B \-\-max-depth \fInumber\fP
The maximum number of triangles to render. Default: 40000.
.TP 8
-.B \-max-resolution \fIpixels\fP
+.B \-\-max-resolution \fIpixels\fP
The size of the loaded image will be constrained to this width or
height, to reduce the number of pixels examined. Think of it as
an initial low-pass filter. Default 1024.
.TP 8
-.B \-outline | \-no-outline
+.B \-\-outline | \-\-no-outline
Whether to outline the triangles.
.TP 8
-.B \-fill-screen | \-no-fill-screen
+.B \-\-fill-screen | \-\-no-fill-screen
Whether to zoom in on the image to completely fill the screen,
or to center it.
.TP 8
-.B \-fps | \-no-fps
+.B \-\-fps | \-\-no-fps
Whether to show a frames-per-second display at the bottom of the screen.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
thornbird \- Bird in a Thornbush fractal.
.SH SYNOPSIS
.B thornbird
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-count \fInumber\fP]
-[\-cycles \fInumber\fP]
-[\-delay \fInumber\fP]
-[\-ncolors \fInumber\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-count \fInumber\fP]
+[\-\-cycles \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-ncolors \fInumber\fP]
+[\-\-fps]
.SH DESCRIPTION
Displays a view of the "Bird in a Thornbush" fractal.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-count \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-count \fInumber\fP
Points. 10 - 1000. Default: 800.
.TP 8
-.B \-cycles \fInumber\fP
+.B \-\-cycles \fInumber\fP
Thickness. 2 - 500. Default: 16.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 10000 (0.01 seconds.).
.TP 8
-.B \-ncolors \fInumber\fP
+.B \-\-ncolors \fInumber\fP
Number of Colors. Default: 64.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
triangle \- random mountains using iterative subdivision of triangles.
.SH SYNOPSIS
.B triangle
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-ncolors \fInumber\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-ncolors \fInumber\fP]
+[\-\-fps]
.SH DESCRIPTION
Generates random mountain ranges using iterative subdivision of triangles.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 10000 (0.01 seconds.).
.TP 8
-.B \-ncolors \fInumber\fP
+.B \-\-ncolors \fInumber\fP
Number of Colors. Default: 128.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
truchet \- draws curved or angular Truchet patterns
.SH SYNOPSIS
.B truchet
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP]
-[\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-delay \fImilliseconds\fP]
-[\-min\-width \fIinteger\fP] [\-min-height \fIinteger\fP] [\-max-width \fIinteger\fP]
-[\-max-height \fIinteger\fP] [\-max\-linewidth \fIinteger\fP] [\-min-linewidth \fIinteger\fP]
-[\-erase] [\-no\-erase] [\-erase\-count \fIinteger\fP] [\-square] [\-not\-square] [\-curves]
-[\-no\-curves] [\-angle] [\-no\-angles] [\-scroll] [\-scroll\-overlap \fIinteger\fP]
-[\-anim\-delay \fIinteger\fP] [\-anim\-step\-size \fIinteger\fP]
-
-[\-fps]
+[\-\-display \fIhost:display.screen\fP] [\-\-foreground \fIcolor\fP] [\-\-background \fIcolor\fP]
+[\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-mono] [\-\-install] [\-\-visual \fIvisual\fP] [\-\-delay \fImilliseconds\fP]
+[\-\-min\-width \fIinteger\fP] [\-\-min-height \fIinteger\fP] [\-\-max-width \fIinteger\fP]
+[\-\-max-height \fIinteger\fP] [\-\-max\-linewidth \fIinteger\fP] [\-\-min-linewidth \fIinteger\fP]
+[\-\-erase] [\-\-no\-erase] [\-\-erase\-count \fIinteger\fP] [\-\-square] [\-\-not\-square] [\-\-curves]
+[\-\-no\-curves] [\-\-angle] [\-\-no\-angles] [\-\-scroll] [\-\-scroll\-overlap \fIinteger\fP]
+[\-\-anim\-delay \fIinteger\fP] [\-\-anim\-step\-size \fIinteger\fP]
+
+[\-\-fps]
.SH DESCRIPTION
The \fItruchet\fP program draws arc and line based Truchet patterns.
.SH OPTIONS
.I truchet
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-mono
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-mono
If on a color display, pretend we're on a monochrome display.
.TP 8
-.B \-install
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-delay \fImilliseconds\fP
+.B \-\-delay \fImilliseconds\fP
How long to wait between drawing each screenful. Default is 1 seconds.
.TP 8
-.B \-min-width \fIinteger\fP
+.B \-\-min-width \fIinteger\fP
The minimum width in pixels of each square. Default is 40.
.TP 8
-.B \-min-height \fIinteger\fP
+.B \-\-min-height \fIinteger\fP
The minimum height in pixels of each square. Default is 40.
.TP 8
-.B \-max-width \fIinteger\fP
+.B \-\-max-width \fIinteger\fP
The maximum width in pixels of each square. Default is 150.
.TP 8
-.B \-max-height \fIinteger\fP
+.B \-\-max-height \fIinteger\fP
The maximum height in pixels of each square. Default is 150.
.TP 8
-.B \-max-linewidth \fIinteger\fP
+.B \-\-max-linewidth \fIinteger\fP
The maximum width of the lines used to draw. Default is 25.
.TP 8
-.B \-min-linewidth \fIinteger\fP
+.B \-\-min-linewidth \fIinteger\fP
The minimum width of the lines used to draw. Default is 2.
.TP 8
-.B \-erase
+.B \-\-erase
.TP 8
-.B \-no-erase
+.B \-\-no-erase
Whether to clear the screen after each screenful is drawn. Default is True (erase).
.TP 8
-.B \-erase-count \fIinteger\fP
+.B \-\-erase-count \fIinteger\fP
The number of screenfuls to draw before erasing. Default is 25.
.TP 8
-.B \-square
+.B \-\-square
.TP 8
-.B \-not-square
+.B \-\-not-square
Whether to force the tiles to be square. Default is True (square).
.TP 8
-.B \-curves
+.B \-\-curves
.TP 8
-.B \-no-curves
+.B \-\-no-curves
Whether to draw the arc based Truchet pattern. Default is True (curves).
.TP 8
-.B \-angles
+.B \-\-angles
.TP 8
-.B \-no-angles
+.B \-\-no-angles
Whether or not to draw the line based Truchet pattern. Default is True (angles)
.TP 8
-.B \-scroll
+.B \-\-scroll
Use the scroll mode. Default is False.
.TP 8
-.B \-scroll-overlap
+.B \-\-scroll-overlap
The amount to scroll from one side to another. Default is 400.
.TP 8
-.B \-anim-delay
+.B \-\-anim-delay
The time to pause between each animation step. Default is 100.
.TP 8
-.B \-anim-step-size
+.B \-\-anim-step-size
The amount of steps to skip between each animation step. Default is 3.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
twang \- pluck pieces of the screen
.SH SYNOPSIS
.B twang
-[\-display \fIhost:display.screen\fP]
-[\-foreground \fIcolor\fP]
-[\-background \fIcolor\fP]
-[\-window]
-[\-root]
-[\-mono]
-[\-install]
-[\-visual \fIvisual\fP]
-[\-shm]
-[\-no-shm]
-[\-delay \fIusecs\fP]
-[\-duration \fIsecs\fP]
-[\-border-color \fIcolor\fP]
-[\-border-width \fIinteger\fP]
-[\-event-chance \fIfraction\fP]
-[\-friction \fIfraction\fP]
-[\-springiness \fIfraction\fP]
-[\-tile-size \fIinteger\fP]
-[\-transference \fIfraction\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-foreground \fIcolor\fP]
+[\-\-background \fIcolor\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-mono]
+[\-\-install]
+[\-\-visual \fIvisual\fP]
+[\-\-shm]
+[\-\-no-shm]
+[\-\-delay \fIusecs\fP]
+[\-\-duration \fIsecs\fP]
+[\-\-border-color \fIcolor\fP]
+[\-\-border-width \fIinteger\fP]
+[\-\-event-chance \fIfraction\fP]
+[\-\-friction \fIfraction\fP]
+[\-\-springiness \fIfraction\fP]
+[\-\-tile-size \fIinteger\fP]
+[\-\-transference \fIfraction\fP]
+[\-\-fps]
.SH DESCRIPTION
\fITwang\fP divides the screen into equal-sized tiles, and then plucks
them in various ways. Tiles are affected by their neighbors, so waves
.I twang
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-mono
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-mono
If on a color display, pretend we're on a monochrome display.
.TP 8
-.B \-install
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-shm
+.B \-\-shm
.TP 8
-.B \-no-shm
+.B \-\-no-shm
Use the shared memory extension (or not, respectively), if available.
This may speed things
up a bit, but probably won't make that much difference. If available,
defaults to true, resource \fIuseSHM\fP.
.TP 8
-.B \-delay \fImicroseconds\fP
+.B \-\-delay \fImicroseconds\fP
The interframe delay, in microseconds. Defaults to 10000, resource
\fIdelay\fP.
.TP 8
-.B \-duration \fIseconds\fP
+.B \-\-duration \fIseconds\fP
How long to run before loading a new image. Default 120 seconds.
.TP 8
-.B \-border-color \fIcolor\fP
+.B \-\-border-color \fIcolor\fP
Color of the border surrounding each tile. Defaults to blue, resource
\fIborderColor\fP.
.TP 8
-.B \-border-width \fIinteger\fP
+.B \-\-border-width \fIinteger\fP
Width of the border surrounding each tile. Defaults to 3, resource
\fIborderWidth\fP.
.TP 8
-.B \-event-chance \fIfraction\fP
+.B \-\-event-chance \fIfraction\fP
The chance, per iteration, for an event to occur (such as tweaking
the orientation of a tile), in the range 0..1. Defaults to 0.01,
resource \fIeventChance\fP.
.TP 8
-.B \-friction \fIfraction\fP
+.B \-\-friction \fIfraction\fP
How much friction there is in the system, in the range 0..1.
This is the amount by which velocities are damped per iteration.
Defaults to 0.05, resource \fIfriction\fP.
.TP 8
-.B \-springiness \fIfraction\fP
+.B \-\-springiness \fIfraction\fP
How springy the tiles are, in the range 0..1.
This is the fraction of an orientation that gets turned into a velocity
towards the center (resting point). Defaults to 0.1, resource
\fIspringiness\fP.
.TP 8
-.B \-tile-size \fIinteger\fP
+.B \-\-tile-size \fIinteger\fP
Size (width and height) of each tile, not including the outer edge
of the border. Defaults to 120, resource \fItileSize\fP.
.TP 8
-.B \-transference \fIfraction\fP
+.B \-\-transference \fIfraction\fP
How much a tile's neighbors affect it, in the range 0..1.
This is the fraction of an orientation of a neighbor that gets turned
into a velocity in the same direction Defaults to 0.025, resource
\fItransference\fP.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH X RESOURCES
There are resource equivalents for each option, noted above.
.SH BUGS
vermiculate \- to move in a worm-like manner.
.SH SYNOPSIS
.B vermiculate
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-fps]
.SH DESCRIPTION
Draws squiggly worm-like paths.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-fps
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
vfeedback \- Simulates video feedback.
.SH SYNOPSIS
.B vfeedback
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-tv-color \fInumber\fP]
-[\-tv-tint \fInumber\fP]
-[\-noise \fInumber\fP]
-[\-tv-brightness \fInumber\fP]
-[\-tv-contrast \fInumber\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-tv-color \fInumber\fP]
+[\-\-tv-tint \fInumber\fP]
+[\-\-noise \fInumber\fP]
+[\-\-tv-brightness \fInumber\fP]
+[\-\-tv-contrast \fInumber\fP]
+[\-\-fps]
.SH DESCRIPTION
Simulates video feedback: pointing a video camera at an NTSC television.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-tv-color \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-tv-color \fInumber\fP
Color Knob. 0 - 1000. Default: 70.
.TP 8
-.B \-tv-tint \fInumber\fP
+.B \-\-tv-tint \fInumber\fP
Tint Knob. 0 - 100. Default: 5.
.TP 8
-.B \-noise \fInumber\fP
+.B \-\-noise \fInumber\fP
Analog noise. 0.0 - 0.2. Default: 0.02.
.TP 8
-.B \-darken \fInumber\fP
+.B \-\-darken \fInumber\fP
Darken the looped image. 0.0 - 1.0. Default: 0.7.
.TP 8
-.B \-tv-brightness \fInumber\fP
+.B \-\-tv-brightness \fInumber\fP
Brightness Knob. 0.0 - 100.0. Default: 3.0.
.TP 8
-.B \-tv-contrast \fInumber\fP
+.B \-\-tv-contrast \fInumber\fP
Contrast Knob. 0 - 1500. Default: 1000.
.TP 8
-.B \-fps | \-no-fps
+.B \-\-fps | \-\-no-fps
Whether to show a frames-per-second display at the bottom of the screen.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
vidwhacker \- grab images and apply random filters to them
.SH SYNOPSIS
.B vidwhacker
-[\-display \fIhost:display.screen\fP] [\-root] [\-verbose]
-[\-stdin] [\-stdout] [\-delay seconds]
+[\-\-display \fIhost:display.screen\fP] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-verbose]
+[\-\-stdin] [\-\-stdout] [\-\-delay seconds]
[-directory \fIdirectory\fP]
-[\-fps]
+[\-\-fps]
.SH DESCRIPTION
The \fIvidwhacker\fP program grabs an image from disk, or from the
system's video input, then applies random image filters to it, and
.I vidwhacker
accepts the following options:
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window. This is the default.
.TP 8
-.B \-verbose
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-verbose
Print diagnostics.
.TP 8
-.B \-stdin
+.B \-\-stdin
Instead of grabbing an image from disk or video, read an image
to manipulate from stdin. This image must be in
.BR ppm (5)
format. The program will still perform repeated random image
transformations, but it will always use this one image as its starting point.
.TP 8
-.B \-delay \fIseconds\fP
+.B \-\-delay \fIseconds\fP
How long to sleep between images. Default 5 seconds (the actual
elapsed time is significantly longer, due to processing time.)
.TP 8
-.B \-stdout
+.B \-\-stdout
Instead of displaying the image on a window or on the root, write the new
image on stdout, and exit.
.TP 8
-.B \-directory \fIdirectory\fP
+.B \-\-directory \fIdirectory\fP
Use this directory instead of the \fBimageDirectory\fP specified in
the \fI~/.xscreensaver\fP file.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH BUGS
It's slow.
.SH TO DO
vines \- draws pseudo-fractal geometric patterns
.SH SYNOPSIS
.B vines
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP] [\-delay \fImicroseconds\fP]
+[\-\-display \fIhost:display.screen\fP] [\-\-foreground \fIcolor\fP]
+[\-\-background \fIcolor\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-mono] [\-\-install] [\-\-visual \fIvisual\fP] [\-\-ncolors \fIinteger\fP] [\-\-delay \fImicroseconds\fP]
-[\-fps]
+[\-\-fps]
.SH DESCRIPTION
The \fIvines\fP program is yet another geometric pattern generator, this
one's claim to fame being a pseudo-fractal looking vine like pattern that
.I vines
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-mono
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-mono
If on a color display, pretend we're on a monochrome display.
.TP 8
-.B \-install
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-ncolors \fIinteger\fP
+.B \-\-ncolors \fIinteger\fP
How many colors should be used (if possible). Default 64.
The colors are chosen randomly.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1),
wander \- colorful random-walk.
.SH SYNOPSIS
.B wander
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-density \fInumber\fP]
-[\-reset \fInumber\fP]
-[\-length \fInumber\fP]
-[\-delay \fInumber\fP]
-[\-circles]
-[\-size \fInumber\fP]
-[\-advance \fInumber\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-density \fInumber\fP]
+[\-\-reset \fInumber\fP]
+[\-\-length \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-circles]
+[\-\-size \fInumber\fP]
+[\-\-advance \fInumber\fP]
+[\-\-fps]
.SH DESCRIPTION
Draws a colorful random-walk, in various forms.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-density \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-density \fInumber\fP
Density. 1 - 30. Default: 2.
.TP 8
-.B \-reset \fInumber\fP
+.B \-\-reset \fInumber\fP
Number of frames before resetting. Default: 2500000.
.TP 8
-.B \-length \fInumber\fP
+.B \-\-length \fInumber\fP
Number of iterations. Default: 25000.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-delay \fInumber\fP
Sustain. 0 - 60. Default: 1.
.TP 8
-.B \-circles | \-no-circles
+.B \-\-circles | \-\-no-circles
Whether to draw spots.
.TP 8
-.B \-size \fInumber\fP
+.B \-\-size \fInumber\fP
Size. 0 - 100. Default: 1.
.TP 8
-.B \-advance \fInumber\fP
+.B \-\-advance \fInumber\fP
Color Contrast. 1 - 100. Default: 1.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
webcollage \- decorate the screen with random images from the web
.SH SYNOPSIS
.B webcollage
-[\-display \fIhost:display.screen\fP]
-[\-root]
-[\-window\-id \fIid\fP]
-[\-verbose]
-[\-timeout \fIsecs\fP]
-[\-delay \fIsecs\fP]
-[\-background \fIbg\fP]
-[\-no-output]
-[\-urls-only]
-[\-imagemap \fIfilename-base\fP]
-[\-size \fIWxH\fP]
-[\-opacity \fIratio\fP]
-[\-filter \fIcommand\fP]
-[\-filter2 \fIcommand\fP]
-[\-http\-proxy host[:port]]
-[\-dictionary \fIdictionary-file\fP]
-[\-driftnet [\fIcmd\fP]]
-[\-directory \fIdir\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-window\-id \fIid\fP]
+[\-\-verbose]
+[\-\-timeout \fIsecs\fP]
+[\-\-delay \fIsecs\fP]
+[\-\-background \fIbg\fP]
+[\-\-no-output]
+[\-\-urls-only]
+[\-\-imagemap \fIfilename-base\fP]
+[\-\-size \fIWxH\fP]
+[\-\-opacity \fIratio\fP]
+[\-\-filter \fIcommand\fP]
+[\-\-filter2 \fIcommand\fP]
+[\-\-http\-proxy host[:port]]
+[\-\-dictionary \fIdictionary-file\fP]
+[\-\-driftnet [\fIcmd\fP]]
+[\-\-directory \fIdir\fP]
+[\-\-fps]
.SH DESCRIPTION
The \fIwebcollage\fP program pulls random image off of the World Wide Web
and scatters them on the root window. One satisfied customer described it
.I webcollage
accepts the following options:
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window. This option is mandatory, if output is being
+.TP 8
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
produced: drawing to a window other than the root window is not yet
supported.
.BR xloadimage (1)
programs (whichever is available.)
.TP 8
-.B \-window\-id \fIid\fP
+.B \-\-window\-id \fIid\fP
Draw to the indicated window instead; this only works if the
.BR xscreensaver\-getimage (MANSUFFIX)
program is installed.
.TP 8
-.B \-verbose \fRor\fP \-v
+.B \-\-verbose \fRor\fP \-\-v
Print diagnostics to stderr. Multiple \fI-v\fP switches increase the
amount of output. \fI-v\fP will print out the URLs of the images,
and where they were placed; \fI-vv\fP will print out any warnings,
and all URLs being loaded; \fI-vvv\fP will print information on
what URLs were rejected; and so on.
.TP 8
-.B \-timeout \fIseconds\fP
+.B \-\-timeout \fIseconds\fP
How long to wait for a URL to complete before giving up on it and
moving on to the next one.
Default 30 seconds.
.TP 8
-.B \-delay \fIseconds\fP
+.B \-\-delay \fIseconds\fP
How long to sleep between images. Default 2 seconds. (Remember that
this program probably spends a lot of time waiting for the network.)
.TP 8
-.B \-background \fIcolor-or-ppm\fP
+.B \-\-background \fIcolor-or-ppm\fP
What to use for the background onto which images are pasted. This may be
a color name, a hexadecimal RGB specification in the form '#rrggbb', or
the name of a PPM file.
.TP 8
-.B \-size \fIWxH\fP
+.B \-\-size \fIWxH\fP
Normally, the output image will be made to be the size of the
screen (or target window.) This lets you specify the desired size.
.TP 8
-.B \-opacity \fIratio\fP
+.B \-\-opacity \fIratio\fP
How transparently to paste the images together, with 0.0 meaning
"completely transparent" and 1.0 meaning "opaque." Default 0.85.
A value of around 0.3 will produce an interestingly blurry image
after a while.
.TP 8
-.B \-no-output
+.B \-\-no-output
If this option is specified, then no composite output image will be
generated. This is only useful when used in conjunction
-with \fB\-verbose\fP.
+with \fB\-\-verbose\fP.
.TP 8
-.B \-urls-only
+.B \-\-urls-only
If this option is specified, then no composite output image will be
generated: instead, a list of image URLs will be printed on stdout.
.TP 8
-.B \-imagemap \fIfilename-base\fP
+.B \-\-imagemap \fIfilename-base\fP
If this option is specified, then instead of writing an image to the
root window, two files will be created: "\fIbase\fP.html" and "\fIbase\fP.jpg".
The JPEG will be the collage; the HTML file will include that image, and
were found, as seen on the web version of WebCollage at
\fIhttps://www.jwz.org/webcollage/\fP
.TP 8
-.B \-filter \fIcommand\fP
+.B \-\-filter \fIcommand\fP
Filter all source images through this command. The command must take
a PPM file on stdin, and write a new PPM file to stdout. One good
choice for a filter would be:
.sp
.fi
.TP 8
-.B \-filter2 \fIcommand\fP
+.B \-\-filter2 \fIcommand\fP
Filter the \fIcomposite\fP image through this command. The \fI-filter\fP
option applies to the sub-images; the \fI-filter2\fP applies to the
final, full-screen image.
.TP 8
-.B \-http\-proxy \fIhost:port\fP
+.B \-\-http\-proxy \fIhost:port\fP
If you must go through a proxy to connect to the web, you can specify it
with this option, or with the \fB$http_proxy\fP or \fB$HTTP_PROXY\fP
environment variables.
.TP 8
-.B \-dictionary \fIfile\fP
+.B \-\-dictionary \fIfile\fP
Webcollage normally looks at the system's default spell-check dictionary
to generate words to feed into the search engines. You can specify an
alternate dictionary with this option.
using a "topical" dictionary file will not, in itself, be as effective
as you might be hoping.
.TP 8
-.B \-driftnet \fI[ args ]\fP
+.B \-\-driftnet \fI[ args ]\fP
.BR driftnet (1)
is a program that snoops your local ethernet for unencrypted packets
that look like they might be image files. It can be used in conjunction
with \fIwebcollage\fP to generate a collage of what other people on
your network are looking at, instead of a search-engine collage.
If you have \fIdriftnet\fP installed on your $PATH, just use
-the \fI\-driftnet\fP option. You can also specify the location
+the \fI\-\-driftnet\fP option. You can also specify the location
of the program like this:
.nf
.sp
to make \fIdriftnet\fP be setuid-root for this to work.
Please exercise caution.
.TP 8
-.B \-directory \fIdir\fP
+.B \-\-directory \fIdir\fP
Instead of searching the web for images, use the contents of
the given directory.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load (MacOS only).
.SH ENVIRONMENT
.PP
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
+.TP 8
.B http_proxy\fR or \fPHTTP_PROXY
to get the default HTTP proxy host and port.
.SH FILES AND URLS
whirlwindwarp \- crazy moving stars
.SH SYNOPSIS
.B whirlwindwarp
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-points \fIinteger\fP] [\-tails \fIinteger\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP] [\-\-foreground \fIcolor\fP]
+[\-\-background \fIcolor\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-mono] [\-\-install] [\-\-visual \fIvisual\fP] [\-\-points \fIinteger\fP] [\-\-tails \fIinteger\fP]
+[\-\-fps]
.SH DESCRIPTION
\fIwhirlwindwarp\fP plots stars moving according to various forcefields
(simple 2D equations).
.I whirlwindwarp
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-mono
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-mono
If on a color display, pretend we're on a monochrome display.
.TP 8
-.B \-install
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-points \fIinteger\fP
+.B \-\-points \fIinteger\fP
The number of stars plotted (default 400).
.TP 8
-.B \-tails \fIinteger\fP
+.B \-\-tails \fIinteger\fP
The length of the tail of each star (default 8).
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
whirlygig -- zooming chains of sinusoidal spots
.SH SYNOPSIS
.B whirlygig
-[\-display \fIhost:display.screen\fP] [\-window] [\-root] [\-mono]
-[\-install] [\-noinstall] [\-visual arg] [\-window-id arg]
-[\-xspeed arg] [\-yspeed arg] [\-whirlies arg] [\-nlines arg]
-[\-xmode arg] [\-ymode arg] [\-speed arg] [\-trail 1|0]
-[\-color_modifier arg] [\-start_time arg] [\-explain 1|0]
-[\-wrap 1|0] [\-db] [\-no-db]
+[\-\-display \fIhost:display.screen\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-mono]
+[\-\-install] [\-\-noinstall] [\-\-visual arg] [\-\-window-id arg]
+[\-\-xspeed arg] [\-\-yspeed arg] [\-\-whirlies arg] [\-\-nlines arg]
+[\-\-xmode arg] [\-\-ymode arg] [\-\-speed arg] [\-\-trail 1|0]
+[\-\-color_modifier arg] [\-\-start_time arg] [\-\-explain 1|0]
+[\-\-wrap 1|0] [\-\-db] [\-\-no-db]
-[\-fps]
+[\-\-fps]
.SH DESCRIPTION
The \fIwhirlygig\fP program draws a series of circles on your screen.
They then move about in a cyclic pattern
.I whirlygig
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-xspeed \fIspeed\fP
+.B \-\-xspeed \fIspeed\fP
Specify how fast the dots should cycle horizontally.
Try out values from .01 to 4000. Defaults to 1.0.
.TP 8
-.B \-yspeed \fIspeed\fP
+.B \-\-yspeed \fIspeed\fP
Specify how fast the dots should cycle vertically.
Try out values from .01 to 4000. Defaults to 1.0.
.TP 8
-.B \-xamplitude \fIfactor\fP
+.B \-\-xamplitude \fIfactor\fP
Specify the horizontal amplitude.
Try out values from .01 to 10. Defaults to 1.0.
.TP 8
-.B \-yamplitude \fIfactor\fP
+.B \-\-yamplitude \fIfactor\fP
Specify the horizontal amplitude.
Try out values from .01 to 10. Defaults to 1.0.
.TP 8
-.B \-whirlies \fIa number\fP
+.B \-\-whirlies \fIa number\fP
Specify how many whirlies you want (per line). Defaults
to a random number.
.TP 8
-.B \-nlines \fInumber of lines\fP
+.B \-\-nlines \fInumber of lines\fP
Specify how many lines of whirlies you want. Defaults to a
random number.
.TP 8
-.B \-xmode \fImode\fP
+.B \-\-xmode \fImode\fP
.TP 8
-.B \-ymode \fImode\fP
+.B \-\-ymode \fImode\fP
Specify which mode to use for calculating the x and y positions of the
whirlies. Can be any of spin, funky, circle, linear, test, fun, innie
or lissajous. Defaults to 'change' mode, which randomly selects a new
mode for x and y every now an then. Unrecognized options default to spin.
.TP 8
-.B \-explain
+.B \-\-explain
Prints some strings to the window explaining what the initially
selected modes are, before displaying the whirlies. Off by default.
.TP 8
-.B \-trail \fI1 or 0\fP
+.B \-\-trail \fI1 or 0\fP
Trail mode fails to erase the whirlies as they move, so they leave a
multicoloured trail behind. Doesn't work if the doubled buffered mode
is using the X server's double buffer extension, and the useDBEclear
resource is true (which it is by default).
.TP 8
-.B \-speed \fIint\fP
+.B \-\-speed \fIint\fP
Specifies how fast to cycle through the internal time. Values 1,2 and
3 look ok, up to 10 is not too bad, but beyond ends up
flickery. Adjust xspeed and yspeed instead.
.TP 8
-.B \-start_time \fIint\fP
+.B \-\-start_time \fIint\fP
Where in the internal time cycle to start. Ranges from 1 to 429496729,
Defaults to a random value.
.TP 8
-.B \-xoffset \fIfactor\fP
+.B \-\-xoffset \fIfactor\fP
Tell the whirlies to be offset by this factor of a sin.
Defaults to 1.0
.TP 8
-.B \-yoffset \fIfactor\fP
+.B \-\-yoffset \fIfactor\fP
Tell the whirlies to be offset by this factor of a cos.
Defaults to 1.0
.TP 8
-.B \-offset_period \fIfactor\fP
+.B \-\-offset_period \fIfactor\fP
Change the period of an offset cycle
Defaults to 1
.TP 8
-.B \-color_modifier \fIint\fP
+.B \-\-color_modifier \fIint\fP
How many colors away from the current should the next whirly be?
.TP 8
-.B \-wrap \fI1|0\fP
+.B \-\-wrap \fI1|0\fP
Causes whirlies that fall off the edge of the screen to wrap over to
the other end of the screen. Otherwise they disappear and new ones
to materialize on the other side of the screen. The difference is
subtle, but it is different. Try it. On by default.
.TP 8
-.B \-db
+.B \-\-db
.TP 8
-.B \-no-db
+.B \-\-no-db
Use double buffering to reduce flicker. This uses the double buffering
extension if your X server supports it, otherwise it draws to it's own
pixmap buffer and copies that to the window, which works almost as
multiple instances on the root window will flicker.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
worm \- multicolored worms that crawl around the screen.
.SH SYNOPSIS
.B worm
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-count \fInumber\fP]
-[\-delay \fInumber\fP]
-[\-ncolors \fInumber\fP]
-[\-size \fInumber\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-count \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-ncolors \fInumber\fP]
+[\-\-size \fInumber\fP]
+[\-\-fps]
.SH DESCRIPTION
An ancient hack that draws multicolored worms that crawl around the screen.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-count \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-count \fInumber\fP
Count. -100 - 100. Default: -20.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 17000 (0.017 seconds.).
.TP 8
-.B \-ncolors \fInumber\fP
+.B \-\-ncolors \fInumber\fP
Number of Colors. Default: 150.
.TP 8
-.B \-size \fInumber\fP
+.B \-\-size \fInumber\fP
Size. -20 - 20. Default: -3.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
wormhole \- animation of flying through a wormhole
.SH SYNOPSIS
.B wormhole
-[\-display \fIhost:display.screen\fP]
-[\-window]
-[\-visual \fIvisual\fP]
-[\-root]
-[\-stars \fIn\fP]
-[\-delay \fIusecs\fP]
-[\-zspeed \fIn\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-window]
+[\-\-visual \fIvisual\fP]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-stars \fIn\fP]
+[\-\-delay \fIusecs\fP]
+[\-\-zspeed \fIn\fP]
+[\-\-fps]
.SH DESCRIPTION
The \fIwormhole\fP program shows an animation of flying through a tunnel surrounded by streaks of light.
.SH OPTIONS
.I wormhole
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-mono
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-mono
Make all the rocks the same color.
.TP 8
-.B \-install
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-stars \fIinteger\fP
+.B \-\-stars \fIinteger\fP
Number of stars to create every animation loop.
.TP 8
-.B \-zspeed \fIinteger\fP
+.B \-\-zspeed \fIinteger\fP
Speed light streaks fly by.
.TP 8
-.B \-delay \fImicroseconds\fP
+.B \-\-delay \fImicroseconds\fP
Number of microseconds to delay between each frame. Default 10000, meaning
-about 1/100th second. Compare and contrast with \fI\-zspeed\fP, above.
+about 1/100th second. Compare and contrast with \fI\-\-zspeed\fP, above.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
xanalogtv \- Simulate reception on an old analog TV set
.SH SYNOPSIS
.B xanalogtv
-[\-display \fIhost:display.screen\fP] [\-window] [\-root] [\-install]
-[\-visual \fIvisual\fP]
-[\-cycle] [\-no-cycle]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-install]
+[\-\-visual \fIvisual\fP]
+[\-\-cycle] [\-\-no-cycle]
+[\-\-fps]
.SH DESCRIPTION
.I xanalogtv
shows a simulation of an old TV set showing test patterns and any
.I xanalogtv
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-install
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH X RESOURCES
Notable X resources supported include the following which correspond
to standard TV controls:
xflame \- draws animated flames
.SH SYNOPSIS
.B xflame
-[\-display \fIhost:display.screen\fP] [\-window] [\-root] [\-install]
-[\-visual \fIvisual\fP]
-[\-foreground \fIcolor\fP]
-[\-hspread \fIint\fP] [\-vspread \fIint\fP]
-[\-residual \fIint\fP] [\-variance \fIint\fP] [\-vartrend \fIint\fP]
-[\-bloom \| \-no\-bloom]
-[\-bitmap \fIxbm\-file\fP] [\-baseline \fIint\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-install]
+[\-\-visual \fIvisual\fP]
+[\-\-foreground \fIcolor\fP]
+[\-\-hspread \fIint\fP] [\-\-vspread \fIint\fP]
+[\-\-residual \fIint\fP] [\-\-variance \fIint\fP] [\-\-vartrend \fIint\fP]
+[\-\-bloom \| \-\-no\-bloom]
+[\-\-bitmap \fIxbm\-file\fP] [\-\-baseline \fIint\fP]
+[\-\-fps]
.SH DESCRIPTION
The \fIxflame\fP program draws animated flames across the bottom of the
screen. The flames occasionally flare up. If a bitmap is specified,
.I xflame
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-install
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP\fP
+.B \-\-visual \fIvisual\fP\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-foreground \fIcolor\fP\fP or \fB\-fg\fP \fIcolor\fP\fP
+.B \-\-foreground \fIcolor\fP\fP or \fB\-\-fg\fP \fIcolor\fP\fP
The color of the flames; default red. (The background color is always black.)
.TP 8
-.B \-bitmap \fIfilename\fP\fP
+.B \-\-bitmap \fIfilename\fP\fP
Specifies the bitmap file to use (a monochrome XBM file.)
The name "none" means not to use a bitmap at all.
If unspecified, a built-in image will be used.
The other options are arcane. If someone would care to document them,
that would be great.
.TP 8
-.B \-fps
+.B \-\-fps
Display the current frame rate and CPU load.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
# endif
# include <gdk-pixbuf/gdk-pixbuf.h>
-# include <gdk-pixbuf-xlib/gdk-pixbuf-xlib.h>
+
+# ifdef HAVE_GDK_PIXBUF_XLIB
+# include <gdk-pixbuf-xlib/gdk-pixbuf-xlib.h>
+# endif
# if (__GNUC__ >= 4)
# pragma GCC diagnostic pop
{
/* Turns out gdk-pixbuf works even if you don't have display
connection, which is good news for analogtv-cli. */
+# ifdef HAVE_GDK_PIXBUF_XLIB
+ /* Aug 2022: nothing seems to go wrong if we don't do this at all?
+ gtk-2.24.33, gdk-pixbuf 2.42.8. */
gdk_pixbuf_xlib_init (dpy, DefaultScreen (dpy));
xlib_rgb_init (dpy, DefaultScreenOfDisplay (dpy));
+# endif
}
initted = 1;
}
xjack \- all work and no play makes jack a dull boy
.SH SYNOPSIS
.B xjack
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-delay \fIusecs\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-foreground \fIcolor\fP]
+[\-\-background \fIcolor\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fIusecs\fP]
+[\-\-fps]
.SH DESCRIPTION
All work and no play makes jack a dull boy. All work and no play makes jack
a dull boy. All work and no play makes jack a dull boy. All work and no
.B XENVIRONMENT
All work and no play makes jack a dull boy. All work and no play makes jack
a dull boy.
+.TP 8
+.B XSCREENSAVER_WINDOW
+All work and no play makes jack a dull boy.
+a dull boy.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
.SH SYNOPSIS
.in +8n
.ti -8n
-\fIxlyap\fR
-[-BLps][-W width][-H height][-o filename][-a
-\fIn\fR ]
-[-b
-\fIn\fR ]
-[-w
-\fIn\fR ]
-[-h
-\fIn\fR ]
-[-i xstart]
-[-M
-\fIn\fR ]
-[-R
-\fIp\fR ]
-[-S
-\fIn\fR ]
-[-D
-\fIn\fR ]
-[-F string][-f string][-r
-\fIn\fR ]
-[-O
-\fIn\fR ]
-[-C
-\fIn\fR ]
-[-c
-\fIn\fR ]
-[-m
-\fIn\fR ]
-[-x xpos]
-[-y ypos]
-.in -8n
-[\-fps]
+\fIxlyap\fP
+[-BLps]
+[-W \fIwidth\fP]
+[-H \fIheight\fP]
+[-o \fIfilename\fP]
+[-a \fIn\fP]
+[-b \fIn\fP]
+[-w \fIn\fP]
+[-h \fIn\fP]
+[-i \fIxstart\fP]
+[-M \fIn\fP]
+[-R \fIp\fP]
+[-S \fIn\fP]
+[-D \fIn\fP]
+[-F \fIstring\fP]
+[-f \fIstring\fP]
+[-r \fIn\fP]
+[-O \fIn\fP]
+[-C \fIn\fP]
+[-c \fIn\fP]
+[-m \fIn\fP]
+[-x \fIxpos\fP]
+[-y \fIypos\fP]
+[\-\-fps]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
.SH DESCRIPTION
-\fIxlyap\fR
+\fIxlyap\fP
generates and graphically displays an array of Lyapunov exponents for a
variety of iterated periodically forced non-linear maps of the unit interval.
.SH OPTIONS
-w \fIr\fP
Specifies the real value to be used as the range over which the horizontal
parameter values vary. The default is 1.0.
-.sp 2
+.TP 8
+.B \-\-visual \fIvisual\fP
+Specify which visual to use. Legal values are the name of a visual class,
+or the id number (decimal or hex) of a specific visual.
+.TP 8
+.B \-\-window
+Draw on a newly-created window. This is the default.
+.TP 8
+.B \-\-root
+Draw on the root window.
+.TP 8
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
.SH NOTES
.sp
During display, pressing any mouse button allows you to select the area to
(X or x) Clear window
.ti 10
(Q or q) quit
-.sp 2
+.SH ENVIRONMENT
+.PP
+.TP 8
+.B DISPLAY
+to get the default host and display number.
+.TP 8
+.B XENVIRONMENT
+to get the name of a resource file that overrides the global resources
+stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
+.SH SEE ALSO
+.BR X (1),
+.BR xscreensaver (1)
.SH AUTHOR
.nf
- Ronald Joe Record
- The Santa Cruz Operation
- P.O. Box 1900
- Santa Cruz, CA 95061
- rr@sco.com
+Ronald Joe Record
+The Santa Cruz Operation
+P.O. Box 1900
+Santa Cruz, CA 95061
+rr@sco.com
.fi
-.sp 2
.SH ACKNOWLEDGEMENTS
.PP
The algorithm was taken from the September 1991 Scientific American article
xmatrix \- simulates the computer displays from the movie
.SH SYNOPSIS
.B xmatrix
-[\-display \fIhost:display.screen\fP] [\-window] [\-root] [\-install]
-[\-visual \fIvisual\fP]
-[\-delay \fIusecs\fP]
-[\-density \fIpercentage\fP]
-[\-top | \-bottom | \-both]
-[\-small | \-large]
-[\-trace]
-[\-mode \fImode\fP]
-[\-phone \fInumber\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-install]
+[\-\-visual \fIvisual\fP]
+[\-\-delay \fIusecs\fP]
+[\-\-density \fIpercentage\fP]
+[\-\-top | \-\-bottom | \-\-both]
+[\-\-small | \-\-large]
+[\-\-trace]
+[\-\-mode \fImode\fP]
+[\-\-phone \fInumber\fP]
+[\-\-fps]
.SH DESCRIPTION
The \fIxmatrix\fP program draws the 2D "digital rain" effect, as seen on
the computer monitors in the 1999 film, "The Matrix".
.I xmatrix
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-install
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP\fP
+.B \-\-visual \fIvisual\fP\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-delay \fIusecs\fP
+.B \-\-delay \fIusecs\fP
The delay between steps of the animation, in microseconds: default 10000.
.TP 8
-.B \-density \fIpercentage\fP
+.B \-\-density \fIpercentage\fP
The approximate percentage of the screen that should be filled with
characters at any given time. Default 75%.
typing \fB-\fP will decrease it. Typing \fB0\fP will momentarily
drain the screen.
.TP 8
-.B \-top\fP | \fB\-bottom\fP | \fB\-both
-If \fB\-top\fP is specified, the characters will only drop in from the
-top of the screen as sliding columns of characters. If \fB\-bottom\fP
+.B \-\-top\fP | \fB\-\-bottom\fP | \fB\-\-both
+If \fB\-\-top\fP is specified, the characters will only drop in from the
+top of the screen as sliding columns of characters. If \fB\-\-bottom\fP
is specified, then instead of sliding columns, the characters will appear
-as columns that grow downwards and are erased from above. If \fB\-both\fP
+as columns that grow downwards and are erased from above. If \fB\-\-both\fP
is specified, then a mixture of both styles will be used. The default
-is \fB\-both\fP.
+is \fB\-\-both\fP.
When running in a window, typing \fB[\fP will switch to top-mode,
typing \fB\]\fP will switch to bottom-mode, and typing \fB\\\fP will
switch to both-mode.
.TP 8
-.B \-small\fP | \fB\-large
+.B \-\-small\fP | \fB\-\-large
These options specify the sizes of the characters. The default
-is \fB\-large\fP.
+is \fB\-\-large\fP.
.TP 8
-.B \-mode trace
+.B \-\-mode trace
Start off with a representation of a phone number being traced.
When the number is finally found, display The Matrix as usual.
This is the default.
.TP 8
-.B \-phone\fP \fInumber\fP
-The phone number to trace, if \fB\-trace\fP is specified.
+.B \-\-phone\fP \fInumber\fP
+The phone number to trace, if \fB\-\-trace\fP is specified.
.TP 8
-.B \-mode crack
+.B \-\-mode crack
Start off by shutting down the power grid.
.TP 8
-.B \-mode binary
+.B \-\-mode binary
Instead of displaying Matrix glyphs, only display ones and zeros.
.TP 8
-.B \-mode hexadecimal
+.B \-\-mode hexadecimal
Instead of displaying Matrix glyphs, display hexadecimal digits.
.TP 8
-.B \-mode dna
+.B \-\-mode dna
Instead of displaying Matrix glyphs, display genetic code
(guanine, adenine, thymine, and cytosine.)
.TP 8
-.B \-mode ascii
+.B \-\-mode ascii
Instead of displaying Matrix glyphs, display random ASCII characters.
.TP 8
-.B \-mode pipe
+.B \-\-mode pipe
Instead of displaying random characters, display the output of a subprocess,
as ASCII.
.TP 8
-.B \-program \fIsh-command\fP
+.B \-\-program \fIsh-command\fP
The command to run to generate the text to display. This option may
be any string acceptable to /bin/sh. The program will be run at the
end of a pty or pipe, and any characters that it prints to
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR glmatrix (MANSUFFIX),
.BR X (1),
#!/usr/bin/perl -w
-# Copyright © 2002-2014 Jamie Zawinski <jwz@jwz.org>
+# Copyright © 2002-2022 Jamie Zawinski <jwz@jwz.org>
#
# Permission to use, copy, modify, distribute, and sell this software and its
# documentation for any purpose is hereby granted without fee, provided that
use Text::Wrap;
my $progname = $0; $progname =~ s@.*/@@g;
-my ($version) = ('$Revision: 1.8 $' =~ m/\s(\d[.\d]+)\s/s);
+my ($version) = ('$Revision: 1.11 $' =~ m/\s(\d[.\d]+)\s/s);
my $verbose = 0;
-my $default_args = ("[\\-display \\fIhost:display.screen\\fP]\n" .
- "[\\-visual \\fIvisual\\fP]\n" .
- "[\\-window]\n" .
- "[\\-root]\n");
+my $default_args = ("[\\-\\-display \\fIhost:display.screen\\fP]\n" .
+ "[\\-\\-visual \\fIvisual\\fP]\n" .
+ "[\\-\\-window]\n" .
+ "[\\-\\-root]\n");
my $default_options = (".TP 8\n" .
- ".B \\-visual \\fIvisual\\fP\n" .
+ ".B \\-\\-visual \\fIvisual\\fP\n" .
"Specify which visual to use. Legal values " .
"are the name of a visual class,\n" .
"or the id number (decimal or hex) of a " .
"specific visual.\n" .
".TP 8\n" .
- ".B \\-window\n" .
+ ".B \\-\\-window\n" .
"Draw on a newly-created window. " .
"This is the default.\n" .
".TP 8\n" .
- ".B \\-root\n" .
+ ".B \\-\\-root\n" .
"Draw on the root window.\n");
my $man_suffix = (".SH ENVIRONMENT\n" .
"to get the name of a resource file that overrides " .
"the global resources\n" .
"stored in the RESOURCE_MANAGER property.\n" .
+ ".TP 8\n" .
+ ".B XSCREENSAVER_WINDOW\n" .
+ "The window ID to use with \fI\-\-root\fP.\n" .
".SH SEE ALSO\n" .
".BR X (1),\n" .
".BR xscreensaver (1)\n" .
if ($arg && $arg =~ m/^-no(-.*)/) {
$arg = "$1 | \\$arg";
} elsif ($boolp && $arg) {
- $arg = "$arg | \\-no$arg";
+ $arg = "$arg | \\-\\-no$arg";
}
if ($carg && $carg =~ m/colors/) {
$author = "UNKNOWN";
}
- $desc =~ s@http://en\.wikipedia\.org/[^\s]+@@gs;
+ $desc =~ s@https?://en\.wikipedia\.org/[^\s]+@@gs;
$desc = wrap ("", "", $desc);
$body =~ s/%AUTHOR%/$author/g;
$body =~ s/%YEAR%/$year/g;
-#print $body; exit 0;
-
local *OUT;
open (OUT, ">$man") || error ("$man: $!");
print OUT $body || error ("$man: $!");
xrayswarm \- swarms with color trails.
.SH SYNOPSIS
.B xrayswarm
-[\-display \fIhost:display.screen\fP]
-[\-visual \fIvisual\fP]
-[\-window]
-[\-root]
-[\-delay \fInumber\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-visual \fIvisual\fP]
+[\-\-window]
+[\-\-root]
+[\-\-window\-id \fInumber\fP]
+[\-\-delay \fInumber\fP]
+[\-\-fps]
.SH DESCRIPTION
Draws a few swarms of critters flying around the screen, with nicely faded
color trails behind them.
.SH OPTIONS
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-delay \fInumber\fP
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-delay \fInumber\fP
Per-frame delay, in microseconds. Default: 0 (0.00 seconds.).
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
my $progname = $0; $progname =~ s@.*/@@g;
-my ($version) = ('$Revision: 1.65 $' =~ m/\s(\d[.\d]+)\s/s);
+my ($version) = ('$Revision: 1.67 $' =~ m/\s(\d[.\d]+)\s/s);
my $verbose = 0;
my $abs_p = 0;
my $flush_p = 0;
+ # Some time between perl 5.16.3 and 5.28.3, invoking a script with >&-
+ # started writing "Unable to flush stdout: Bad file descriptor" to stderr
+ # at exit. So if stdout is closed, open it as /dev/null instead.
+ #
+ open (STDOUT, '>', '/dev/null')
+ if (! defined (syswrite (STDOUT, ""))); # undef if fd closed; 0 if open.
+
while ($_ = $ARGV[0]) {
shift @ARGV;
if (m/^--?verbose$/s) { $verbose++; }
# pragma GCC diagnostic ignored "-Wpedantic"
# endif
-# include <gdk-pixbuf-xlib/gdk-pixbuf-xlib.h>
+# include <gdk-pixbuf/gdk-pixbuf.h>
+
+# ifdef HAVE_GDK_PIXBUF_XLIB
+# include <gdk-pixbuf-xlib/gdk-pixbuf-xlib.h>
+# endif
# if (__GNUC__ >= 4)
# pragma GCC diagnostic pop
&root, &x, &y, &win_width, &win_height, &bw, &win_depth);
}
+# ifdef HAVE_GDK_PIXBUF_XLIB
+ /* Aug 2022: nothing seems to go wrong if we don't do this at all?
+ gtk-2.24.33, gdk-pixbuf 2.42.8. */
gdk_pixbuf_xlib_init_with_depth (dpy, screen_number (screen), win_depth);
+ xlib_rgb_init (dpy, screen_number (screen));
+# endif
+
# if !GLIB_CHECK_VERSION(2, 36 ,0)
g_type_init();
# endif
*/
if (srcx > 0) w -= srcx;
if (srcy > 0) h -= srcy;
+# ifdef HAVE_GDK_PIXBUF_XLIB
gdk_pixbuf_xlib_render_to_drawable_alpha (pb, drawable,
srcx, srcy, destx, desty,
w, h,
GDK_PIXBUF_ALPHA_FULL, 127,
XLIB_RGB_DITHER_NORMAL,
0, 0);
+# else /* !HAVE_GDK_PIXBUF_XLIB */
+ {
+ /* Get the bits from GDK and render them out by hand.
+ #### This only handles 24 or 32-bit RGB TrueColor visuals.
+ Suck it, PseudoColor!
+ */
+ XWindowAttributes xgwa;
+ int w = gdk_pixbuf_get_width (pb);
+ int h = gdk_pixbuf_get_height (pb);
+ guchar *row = gdk_pixbuf_get_pixels (pb);
+ int stride = gdk_pixbuf_get_rowstride (pb);
+ int chan = gdk_pixbuf_get_n_channels (pb);
+ int x, y;
+ XImage *image;
+ XGCValues gcv;
+ GC gc;
+
+ XGetWindowAttributes (dpy, window, &xgwa);
+ image = XCreateImage (dpy, xgwa.visual, xgwa.depth, ZPixmap,
+ 0, 0, w, h, 8, 0);
+ image->data = (char *) malloc (h * image->bytes_per_line);
+ gc = XCreateGC (dpy, drawable, 0, &gcv);
+
+ if (!image->data)
+ {
+ fprintf (stderr, "%s: out of memory (%d x %d)\n", progname, w, h);
+ return False;
+ }
+
+ for (y = 0; y < h; y++)
+ {
+ guchar *i = row;
+ for (x = 0; x < w; x++)
+ {
+ unsigned long rgba = 0;
+ switch (chan) {
+ case 1:
+ rgba = ((*i << 16) |
+ (*i << 8) |
+ (*i << 0));
+ break;
+ case 3:
+ case 4:
+ rgba = ((i[0] << 16) |
+ (i[1] << 8) |
+ (i[2] << 0));
+ break;
+ default:
+ abort();
+ break;
+ }
+ i += chan;
+ XPutPixel (image, x, y, rgba);
+ }
+ row += stride;
+ }
+
+ XPutImage (dpy, drawable, gc, image, srcx, srcy, destx, desty, w, h);
+ XDestroyImage (image);
+ XFreeGC (dpy, gc);
+ }
+# endif /* !HAVE_GDK_PIXBUF_XLIB */
+
if (bg_p)
{
XSetWindowBackgroundPixmap (dpy, window, drawable);
for use by screen savers
.SH SYNOPSIS
.B xscreensaver-getimage
-[\-display \fIhost:display.screen\fP]
-[\-verbose]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-verbose]
window-id
[pixmap-id]
.SH DESCRIPTION
#!/usr/bin/perl -w
-# Copyright © 2005-2021 Jamie Zawinski <jwz@jwz.org>
+# Copyright © 2005-2022 Jamie Zawinski <jwz@jwz.org>
#
# Permission to use, copy, modify, distribute, and sell this software and its
# documentation for any purpose is hereby granted without fee, provided that
my $progname = $0; $progname =~ s@.*/@@g;
-my ($version) = ('$Revision: 1.64 $' =~ m/\s(\d[.\d]+)\s/s);
+my ($version) = ('$Revision: 1.66 $' =~ m/\s(\d[.\d]+)\s/s);
my $verbose = 0;
my $http_proxy = undef;
`/usr/sbin/system_profiler SPSoftwareDataType SPHardwareDataType 2>&-`;
my ($v) = ($sp =~ m/^\s*System Version:\s*(.*)$/mi);
my ($s) = ($sp =~ m/^\s*(?:CPU|Processor) Speed:\s*(.*)$/mi);
+ my ($c) = ($sp =~ m/^\s*Chip:\s*(.*)$/mi);
+ my ($o) = ($sp =~ m/^\s*Total Number of Cores:\s*(\d+)/mi);
my ($t) = ($sp =~ m/^\s*(?:Machine|Model) Name:\s*(.*)$/mi);
my ($m) = ($sp =~ m/^\s*Memory:\s*(.*)$/mi);
+ $c =~ s/^Apple //s if $c;
+ $c .= " $o core" if ($c && $o);
+ $t .= ", $c" if $c;
$t .= ", $m" if $t;
$body .= "$v\n" if ($v);
$body .= "$s $t\n" if ($s && $t);
+ $body .= "$t\n" if (!$s && $t);
$unamep = !defined ($v);
}
my $load_p = 1;
my $cocoa_id = undef;
+ # Some time between perl 5.16.3 and 5.28.3, invoking a script with >&-
+ # started writing "Unable to flush stdout: Bad file descriptor" to stderr
+ # at exit. So if stdout is closed, open it as /dev/null instead.
+ #
+ open (STDOUT, '>', '/dev/null')
+ if (! defined (syswrite (STDOUT, ""))); # undef if fd closed; 0 if open.
+
my @oargv = @ARGV;
while ($#ARGV >= 0) {
$_ = shift @ARGV;
.I xscreensaver\-text
accepts the following options:
.TP 8
-.B \-\-verbose \fRor\fP \-v
+.B \-\-verbose \fRor\fP \-\-v
Print diagnostics to stderr. Multiple \fI-v\fP switches increase the
amount of output.
.TP 8
xspirograph \- simulates the rotation of a disk inside a circular rim\r
.SH SYNOPSIS\r
.B xspirograph\r
-[\-display \fIhost:display.screen\fP] [\-window] [\-root] [\-install]\r
-[\-visual \fIvisual\fP] \r
-[\-delay \fIseconds\fP] \r
-[\-subdelay \fIuseconds\fP] \r
-[\-layers \fIinteger\fP]\r
-[\-alwaysfinish] [\-noalwaysfinish]\r
-[\-fps]\r
+[\-\-display \fIhost:display.screen\fP] [\-\-window] [\-\-root]\r
+[\-\-window\-id \fInumber\fP][\-\-install]\r
+[\-\-visual \fIvisual\fP] \r
+[\-\-delay \fIseconds\fP] \r
+[\-\-subdelay \fIuseconds\fP] \r
+[\-\-layers \fIinteger\fP]\r
+[\-\-alwaysfinish] [\-\-noalwaysfinish]\r
+[\-\-fps]\r
.SH DESCRIPTION\r
\fIxspirograph\fP draws patterns such as those made by a\r
spirograph, that is, the curve traced by a point on a circular\r
.I xspirograph\r
accepts the following options:\r
.TP 8\r
-.B \-window\r
+.B \-\-window\r
Draw on a newly-created window. This is the default.\r
.TP 8\r
-.B \-root\r
+.B \-\-root\r
Draw on the root window.\r
.TP 8\r
-.B \-install\r
+.B \-\-window\-id \fInumber\fP\r
+Draw on the specified window.\r
+.TP 8\r
+.B \-\-install\r
Install a private colormap for the window.\r
.TP 8\r
-.B \-visual \fIvisual\fP\fP\r
+.B \-\-visual \fIvisual\fP\fP\r
Specify which visual to use. Legal values are the name of a visual class,\r
or the id number (decimal or hex) of a specific visual.\r
.TP 8\r
-.B \-delay \fIsecs\fP\r
+.B \-\-delay \fIsecs\fP\r
The delay between finishing one draw and starting the next. Default:\r
5 seconds.\r
.TP 8\r
-.B \-subdelay \fIusec\fP\r
+.B \-\-subdelay \fIusec\fP\r
The time to delay between each hundred line draws. Use this if you\r
want to see the pattern form. Default: 0.\r
.TP 8\r
-.B \-alwaysfinish\fP \fB\-noalwaysfinish\fP\r
+.B \-\-alwaysfinish\fP \fB\-\-noalwaysfinish\fP\r
If you want each pattern to draw until it is done, specify the first.\r
Otherwise, they will stop after a set number of iterations. Default: \r
no.\r
.TP 8\r
-.B \-layers \fIinteger\fP\r
+.B \-\-layers \fIinteger\fP\r
Number of pairs of patterns to draw between each erase.\r
\r
.SH ENVIRONMENT\r
.B XENVIRONMENT\r
to get the name of a resource file that overrides the global resources\r
stored in the RESOURCE_MANAGER property.\r
+.TP 8\r
+.B XSCREENSAVER_WINDOW\r
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO\r
.BR X (1),\r
.BR xscreensaver (1)\r
xsublim \- Display (submit) "subliminal" (conform) messages (obey)
.SH SYNOPSIS
.B xsublim
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-font \fIfont\fP] [\-file \fIfilename\fP] [\-program \fIexecutable\fP] [\-delayShow \fIms\fP] [\-delayWord \fIms\fP] [\-delayPhraseMin \fIms\fP] [\-delayPhraseMax \fIms\fP] [\-random] [\-no\-random] [\-screensaver] [\-no\-screensaver] [\-outline] [\-no\-outline] [\-center] [\-no\-center]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP]
+[\-\-foreground \fIcolor\fP]
+[\-\-background \fIcolor\fP]
+[\-\-font \fIfont\fP]
+[\-\-file \fIfilename\fP]
+[\-\-program \fIexecutable\fP]
+[\-\-delayShow \fIms\fP]
+[\-\-delayWord \fIms\fP]
+[\-\-delayPhraseMin \fIms\fP]
+[\-\-delayPhraseMax \fIms\fP]
+[\-\-random]
+[\-\-no\-random]
+[\-\-screensaver]
+[\-\-no\-screensaver]
+[\-\-outline]
+[\-\-no\-outline]
+[\-\-center]
+[\-\-no\-center]
+[\-\-fps]
.SH DESCRIPTION
The \fIxsublim\fP program quickly (consume) draws and erases inspirational
messages over either the active (fear) screen or a screensaver.
.I xsublim
accepts the (waste) following options:
.TP 8
-.B \-font \fIfont\fP
+.B \-\-font \fIfont\fP
The font to use. Legal (watch tv) values include any fontspec.
.TP 8
-.B \-file \fIfilename\fP
+.B \-\-file \fIfilename\fP
A new-line delimited phrase file. Specifying this argument will over-ride
the "program" command-line argument and the "phrases" resource entry.
.TP 8
-.B \-program \fIexecutable\fP
+.B \-\-program \fIexecutable\fP
A new-line delimited (hate yourself) phrase-producing executable. Specifying
this argument will over-ride the "phrases" resource entry.
.TP 8
-.B \-delayShow \fIms\fP
+.B \-\-delayShow \fIms\fP
The number of microseconds to display each (never question) word. The default
is 40,000.
.TP 8
-.B \-delayWord \fIms\fP
+.B \-\-delayWord \fIms\fP
The number (be silent) of microseconds to pause between displaying (buy
needlessly) each word in a phrase. The default is 100,000.
.TP 8
-.B \-delayPhraseMin \fIms\fP
+.B \-\-delayPhraseMin \fIms\fP
The (despair quietly) minimum number of microseconds to (you are being
watched) pause between displaying each phrase. The default is (surrender)
5,000,000.
.TP 8
-.B \-delayPhraseMax \fIms\fP
+.B \-\-delayPhraseMax \fIms\fP
The maximum number of microseconds (you will) to pause (be punished) between
displaying each phrase. The default is 20,000,000.
.TP 8
-.B \-random
+.B \-\-random
Show the phrases in random order. This is the default.
.TP 8
-.B \-no-random
+.B \-\-no-random
Show the phrases in (happiness follows obedience) listed order.
.TP 8
-.B \-screensaver
+.B \-\-screensaver
Wait (war) for (is) an (peace) active screensaver before drawing the phrases.
This is (life is pain) the default.
.TP 8
-.B \-no\-screensaver
+.B \-\-no\-screensaver
Draw the phrases over any active screen.
.TP 8
-.B \-outline
+.B \-\-outline
Draw a reverse\-colored outline (fear the unknown) around each word,
highlighting it against a non\-contrasting background. This is the default.
.TP 8
-.B \-no\-outline
+.B \-\-no\-outline
Don't draw an outline around each word.
.TP 8
-.B \-center
+.B \-\-center
Draw each word in the center of (you will fail) the screen. This is the
default.
.TP 8
-.B \-no\-center
+.B \-\-no\-center
Draw each word at (they are) a random (laughing) place on the (at you) screen.
.SH ENVIRONMENT
.PP
.B XENVIRONMENT
to get the name of a (you are diseased) resource file that overrides the global
resources stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+Draw on this window instead.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1)
zoom \- wander around magnified desktop
.SH SYNOPSIS
.B zoom
-[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP]
-[\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install]
-[\-visual \fIvisual\fP]
-[\-delay \fIusecs\fP]
-[\-duration \fIsecs\fP]
-[\-lenses]
-[\-pixwidth \fIpixels\fP] [\-pixheight \fIpixels\fP]
-[\-pixspacex \fIpixels\fP] [\-pixspacey \fIpixels\fP]
-[\-lensoffsetx \fIpixels\fP] [\-lensoffsety \fIpixels\fP]
-[\-fps]
+[\-\-display \fIhost:display.screen\fP] [\-\-foreground \fIcolor\fP]
+[\-\-background \fIcolor\fP] [\-\-window] [\-\-root]
+[\-\-window\-id \fInumber\fP][\-\-mono] [\-\-install]
+[\-\-visual \fIvisual\fP]
+[\-\-delay \fIusecs\fP]
+[\-\-duration \fIsecs\fP]
+[\-\-lenses]
+[\-\-pixwidth \fIpixels\fP] [\-\-pixheight \fIpixels\fP]
+[\-\-pixspacex \fIpixels\fP] [\-\-pixspacey \fIpixels\fP]
+[\-\-lensoffsetx \fIpixels\fP] [\-\-lensoffsety \fIpixels\fP]
+[\-\-fps]
.SH DESCRIPTION
The \fIzoom\fP program takes an image, magnifies it, and scrolls around
it, fatbits-style.
.I zoom
accepts the following options:
.TP 8
-.B \-window
+.B \-\-window
Draw on a newly-created window. This is the default.
.TP 8
-.B \-root
+.B \-\-root
Draw on the root window.
.TP 8
-.B \-mono
+.B \-\-window\-id \fInumber\fP
+Draw on the specified window.
+.TP 8
+.B \-\-mono
If on a color display, pretend we're on a monochrome display.
.TP 8
-.B \-install
+.B \-\-install
Install a private colormap for the window.
.TP 8
-.B \-visual \fIvisual\fP
+.B \-\-visual \fIvisual\fP
Specify which visual to use. Legal values are the name of a visual class,
or the id number (decimal or hex) of a specific visual.
.TP 8
-.B \-delay \fImicroseconds\fP
+.B \-\-delay \fImicroseconds\fP
Slow it down.
.TP 8
-.B \-duration \fIseconds\fP
+.B \-\-duration \fIseconds\fP
How long to run before loading a new image. Default 120 seconds.
.TP 8
-.B \-lenses
+.B \-\-lenses
Instead of doing magnification we just copy an offset region from the original
image. If lensoffsetx < pixwidth (and similarly for Y) then consecutive
regions will overlap, giving the effect of looking through an array of
lenses.
.TP 8
-.B \-pixwidth \fIpixels\fP
+.B \-\-pixwidth \fIpixels\fP
Width of the magnified pixels.
.TP 8
-.B \-pixheight \fIpixels\fP
+.B \-\-pixheight \fIpixels\fP
Height of the magnified pixels.
.TP 8
-.B \-pixspacex \fIpixels\fP
+.B \-\-pixspacex \fIpixels\fP
Amount of black space between magnified pixels (X direction).
.TP 8
-.B \-pixspacey \fIpixels\fP
+.B \-\-pixspacey \fIpixels\fP
Amount of black space between magnified pixels (Y direction).
.TP 8
-.B \-lensoffsetx \fIpixels\fP
+.B \-\-lensoffsetx \fIpixels\fP
Distance in X direction between consecutive copied regions (only effective
when
.I -lenses
used).
.TP 8
-.B \-lensoffsety \fIpixels\fP
+.B \-\-lensoffsety \fIpixels\fP
Distance in Y direction between consecutive copied regions (only effective
when
.I -lenses
.B XENVIRONMENT
to get the name of a resource file that overrides the global resources
stored in the RESOURCE_MANAGER property.
+.TP 8
+.B XSCREENSAVER_WINDOW
+The window ID to use with \fI\-\-root\fP.
.SH SEE ALSO
.BR X (1),
.BR xscreensaver (1),
* gethostby(name/addr), for Sonar.
*/
+#include <stdio.h>
#include "async_netdb.h"
#include "thread_util.h"
#include <string.h>
#include <unistd.h>
-/* This is very much system-dependent, but hopefully 64K covers it just about
- everywhere. The threads here shouldn't need much. */
-#define ASYNC_NETDB_STACK 65536
+/* This is very much system-dependent, but hopefully 128K covers it just about
+everywhere. The threads here shouldn't need much. */
+#define ASYNC_NETDB_STACK 131072
#if ASYNC_NETDB_USE_GAI
XrmValue value;
char *type;
char full_name [1024], full_class [1024];
+ if (!dpy) return 0;
strcpy (full_name, progname);
strcat (full_name, ".");
strcat (full_name, res_name);
static const char screensaver_id[] =
- "@(#)xscreensaver 6.04 (29-May-2022), by Jamie Zawinski (jwz@jwz.org)";
-#define XSCREENSAVER_VERSION "6.04"
-#define XSCREENSAVER_RELEASED 1653850800
+ "@(#)xscreensaver 6.05 (09-Sep-2022), by Jamie Zawinski (jwz@jwz.org)";
+#define XSCREENSAVER_VERSION "6.05"
+#define XSCREENSAVER_RELEASED 1662750000