Install all pixmaps. (pixmaps_DATA): Add blank-screen.png.
2001-08-09 Richard Hestilow <hestilow@ximian.com> * Makeflie.am (EXTRA_DIST): Install all pixmaps. (pixmaps_DATA): Add blank-screen.png. * pref-file.c: Replace "programs" value with a regenerated string. (print_aligned_row): Added. (print_list_to_str): Added. * preferences.h (Screensaver): Add new fields "filename", "compat_command_line", "fakepreview", and "fakes", to deal with the new xml storage. (Preferences): Add new fields "savers_hash" and "invalidsavers". * preferences.c (screensaver_list_prepend_dir): Added. (screensaver_cmp_func): Added. (screensaver_list_load): Added. (preferences_new): Initialize savers_hash. (clean_saver_list): Added. (preferences_load): Load screensavers from xml. (parse_arg_default): Added. (screensaver_read_xml): Updated for the new format. (screensaver_new_from_file): Added. * prefs-widget.c (double_click_cb): Added. (): Remove right click menu, add double click handler. (model_is_cell_editable): Fix for etable bug. (random_timeout_cb): Avoid vidwhacker and webcollage. * preview.c: Optionally show fakepreview if set, and deal with compat_command_line, and refresh pixbufs. (command_exists): Renamed to rc_command_exists. * rc-parse.c: (parse_screensaver_list): Merely update the existing entries, via the provided hash. * screensaver-prefs-dialog.c (get_argument_data): Just find the xml file using ::filename. * screensavers/magic.pl.in: Added. * screensavers/Makefile.am: Generate .xml.h files for translators, and install all .xml files and .png files, and run magic.pl on make install.
This commit is contained in:
parent
0496f98555
commit
1d840a3813
158 changed files with 2083 additions and 354 deletions
|
@ -1,3 +1,8 @@
|
|||
2001-08-09 Richard Hestilow <hestilow@ximian.com>
|
||||
|
||||
* configure.in: Check for xscreensaver and perl, and
|
||||
generate capplets/screensaver/magic.pl.
|
||||
|
||||
2001-08-07 Bradford Hovinen <hovinen@ximian.com>
|
||||
|
||||
* configure.in: Corect behavior when prefix is not explicitly
|
||||
|
|
|
@ -1,3 +1,47 @@
|
|||
2001-08-09 Richard Hestilow <hestilow@ximian.com>
|
||||
|
||||
* Makeflie.am (EXTRA_DIST): Install all pixmaps.
|
||||
(pixmaps_DATA): Add blank-screen.png.
|
||||
|
||||
* pref-file.c: Replace "programs" value with a regenerated
|
||||
string.
|
||||
(print_aligned_row): Added.
|
||||
(print_list_to_str): Added.
|
||||
|
||||
* preferences.h (Screensaver): Add new fields "filename",
|
||||
"compat_command_line", "fakepreview", and "fakes",
|
||||
to deal with the new xml storage.
|
||||
(Preferences): Add new fields "savers_hash" and "invalidsavers".
|
||||
|
||||
* preferences.c (screensaver_list_prepend_dir): Added.
|
||||
(screensaver_cmp_func): Added.
|
||||
(screensaver_list_load): Added.
|
||||
(preferences_new): Initialize savers_hash.
|
||||
(clean_saver_list): Added.
|
||||
(preferences_load): Load screensavers from xml.
|
||||
(parse_arg_default): Added.
|
||||
(screensaver_read_xml): Updated for the new format.
|
||||
(screensaver_new_from_file): Added.
|
||||
|
||||
* prefs-widget.c (double_click_cb): Added.
|
||||
(): Remove right click menu, add double click handler.
|
||||
(model_is_cell_editable): Fix for etable bug.
|
||||
(random_timeout_cb): Avoid vidwhacker and webcollage.
|
||||
* preview.c: Optionally show fakepreview if set, and
|
||||
deal with compat_command_line, and refresh pixbufs.
|
||||
(command_exists): Renamed to rc_command_exists.
|
||||
|
||||
* rc-parse.c: (parse_screensaver_list): Merely update
|
||||
the existing entries, via the provided hash.
|
||||
|
||||
* screensaver-prefs-dialog.c (get_argument_data): Just
|
||||
find the xml file using ::filename.
|
||||
|
||||
* screensavers/magic.pl.in: Added.
|
||||
* screensavers/Makefile.am: Generate .xml.h files for translators,
|
||||
and install all .xml files and .png files, and run magic.pl on
|
||||
make install.
|
||||
|
||||
2001-07-31 Chema Celorio <chema@celorio.com>
|
||||
|
||||
* Makefile.am (cappletname): add DISTDIR to install-data-local
|
||||
|
|
|
@ -19,7 +19,7 @@ screensaver_properties_capplet_SOURCES = \
|
|||
resources.c resources.h\
|
||||
XScreenSaver_ad.h
|
||||
|
||||
pixmaps_DATA = no-hack.png blank-screen.png
|
||||
pixmaps_DATA = no-hack.png blank-screen.png screen.png
|
||||
|
||||
##
|
||||
## You should not need to modify anything below this line
|
||||
|
@ -39,7 +39,7 @@ install-data-am: install-data-local
|
|||
|
||||
INCLUDES = $(GNOMECC_CAPPLETS_CFLAGS)
|
||||
CLEANFILES = $(GNOMECC_CAPPLETS_CLEANFILES)
|
||||
EXTRA_DIST = $(GNOMECC_CAPPLETS_EXTRA_DIST) no-hack.png
|
||||
EXTRA_DIST = $(GNOMECC_CAPPLETS_EXTRA_DIST) $(pixmaps_DATA)
|
||||
iconsdir = $(GNOMECC_ICONS_DIR)
|
||||
Gladedir = $(GNOMECC_GLADE_DIR)
|
||||
pixmapsdir = $(GNOMECC_PIXMAPS_DIR)
|
||||
|
|
|
@ -417,6 +417,115 @@ write_preference_cb (gchar *key, gchar *value, FILE *out)
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
static gchar*
|
||||
print_aligned_row (const gchar *lbl, const gchar *cmd, gboolean enabled)
|
||||
{
|
||||
int len;
|
||||
int ntab, nspc;
|
||||
gchar *tab, *spc;
|
||||
gchar *buf;
|
||||
|
||||
len = strlen (lbl) + 2; /* Quotes */
|
||||
ntab = (30 - len) / 8;
|
||||
nspc = (30 - len) % 8;
|
||||
tab = g_strnfill (ntab, '\t');
|
||||
spc = g_strnfill (nspc, ' ');
|
||||
buf = g_strdup_printf ("%s%s%s\"%s\" %s\n",
|
||||
(enabled) ? "" : "-",
|
||||
tab, spc,
|
||||
lbl, cmd);
|
||||
g_free (tab);
|
||||
g_free (spc);
|
||||
|
||||
return buf;
|
||||
}
|
||||
|
||||
static gchar*
|
||||
print_list_to_str (Preferences *prefs)
|
||||
{
|
||||
gchar *lbl, *cmd, *buf;
|
||||
gchar *ret;
|
||||
Screensaver *saver;
|
||||
GList *l, *fake;
|
||||
GString *s;
|
||||
gboolean enabled;
|
||||
|
||||
s = g_string_new ("");
|
||||
|
||||
for (l = prefs->screensavers; l != NULL; l = l->next)
|
||||
{
|
||||
saver = l->data;
|
||||
|
||||
if (saver->command_line)
|
||||
cmd = saver->command_line;
|
||||
else if (saver->compat_command_line)
|
||||
cmd = saver->compat_command_line;
|
||||
else
|
||||
continue;
|
||||
|
||||
if (prefs->selection_mode == SM_CHOOSE_RANDOMLY)
|
||||
{
|
||||
/* I wouldn't want these running unless I'd
|
||||
* explicitly enabled them */
|
||||
if (!strcmp (saver->name, "webcollage")
|
||||
|| !strcmp (saver->name, "vidwhacker"))
|
||||
enabled = FALSE;
|
||||
else
|
||||
enabled = TRUE;
|
||||
}
|
||||
else
|
||||
enabled = saver->enabled;
|
||||
if (saver->label)
|
||||
lbl = saver->label;
|
||||
else
|
||||
lbl = saver->name;
|
||||
|
||||
buf = print_aligned_row (lbl, cmd, enabled);
|
||||
g_string_append (s, buf);
|
||||
g_free (buf);
|
||||
|
||||
for (fake = saver->fakes; fake != NULL; fake = fake->next)
|
||||
{
|
||||
buf = print_aligned_row (fake->data, cmd, FALSE);
|
||||
g_string_append (s, buf);
|
||||
g_free (buf);
|
||||
}
|
||||
}
|
||||
|
||||
for (l = prefs->invalidsavers; l != NULL; l = l->next)
|
||||
{
|
||||
saver = l->data;
|
||||
|
||||
if (saver->command_line)
|
||||
cmd = saver->command_line;
|
||||
else if (saver->compat_command_line)
|
||||
cmd = saver->compat_command_line;
|
||||
else
|
||||
cmd = "/bin/true";
|
||||
|
||||
if (saver->label)
|
||||
lbl = saver->label;
|
||||
else
|
||||
lbl = saver->name;
|
||||
|
||||
buf = print_aligned_row (lbl, cmd, FALSE);
|
||||
g_string_append (s, buf);
|
||||
g_free (buf);
|
||||
|
||||
for (fake = saver->fakes; fake != NULL; fake = fake->next)
|
||||
{
|
||||
buf = print_aligned_row (fake->data, cmd, FALSE);
|
||||
g_string_append (s, buf);
|
||||
g_free (buf);
|
||||
}
|
||||
}
|
||||
|
||||
ret = s->str;
|
||||
g_string_free (s, FALSE);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* Adapted from xscreensaver 3.24 driver/prefs.c line 537 ... */
|
||||
|
||||
gint
|
||||
|
@ -427,6 +536,7 @@ preferences_save_to_file (Preferences *prefs)
|
|||
const char *tmp_name = init_file_tmp_name();
|
||||
char *n2 = chase_symlinks (name);
|
||||
struct stat st;
|
||||
gchar *progs, *oldprogs;
|
||||
|
||||
FILE *out;
|
||||
|
||||
|
@ -485,6 +595,15 @@ preferences_save_to_file (Preferences *prefs)
|
|||
"XScreenSaver", "xscreensaver", "3.24", whoami, timestr);
|
||||
}
|
||||
|
||||
/* Ok this is lame, but it is easier than rewriting stuff */
|
||||
progs = print_list_to_str (prefs);
|
||||
oldprogs = g_tree_lookup (prefs->config_db, "programs");
|
||||
/* Is this the right way of doing it? */
|
||||
g_tree_remove (prefs->config_db, "programs");
|
||||
if (oldprogs)
|
||||
g_free (oldprogs);
|
||||
g_tree_insert (prefs->config_db, "programs", progs);
|
||||
|
||||
g_tree_traverse (prefs->config_db,
|
||||
(GTraverseFunc) write_preference_cb,
|
||||
G_IN_ORDER, out);
|
||||
|
|
|
@ -30,8 +30,11 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/types.h>
|
||||
#include <dirent.h>
|
||||
|
||||
#include <gnome.h>
|
||||
#include <parser.h>
|
||||
|
||||
#include "preferences.h"
|
||||
#include "preview.h"
|
||||
|
@ -98,7 +101,7 @@ read_prefs_from_db (Preferences *prefs)
|
|||
|
||||
if (value) {
|
||||
tmp = g_strdup (value);
|
||||
prefs->screensavers = parse_screensaver_list (tmp);
|
||||
parse_screensaver_list (prefs->savers_hash, tmp);
|
||||
g_free (tmp);
|
||||
}
|
||||
}
|
||||
|
@ -155,6 +158,71 @@ store_prefs_in_db (Preferences *prefs)
|
|||
write_screensaver_list (prefs->screensavers));
|
||||
}
|
||||
|
||||
static GList*
|
||||
screensaver_list_prepend_dir (GHashTable *savers_hash,
|
||||
GList *l, const gchar *dirname)
|
||||
{
|
||||
DIR *dir;
|
||||
struct dirent *dent;
|
||||
gchar *filename;
|
||||
Screensaver *saver;
|
||||
|
||||
g_return_val_if_fail (savers_hash != NULL, NULL);
|
||||
g_return_val_if_fail (dirname != NULL, NULL);
|
||||
|
||||
dir = opendir (dirname);
|
||||
if (!dir)
|
||||
return l;
|
||||
|
||||
while ((dent = readdir (dir)))
|
||||
{
|
||||
if (dent->d_name[0] == '.')
|
||||
continue;
|
||||
|
||||
filename = g_concat_dir_and_file (dirname, dent->d_name);
|
||||
saver = screensaver_new_from_file (filename);
|
||||
if (saver)
|
||||
{
|
||||
l = g_list_prepend (l, saver);
|
||||
g_hash_table_insert (savers_hash,
|
||||
saver->name, saver);
|
||||
saver->link = l;
|
||||
}
|
||||
g_free (filename);
|
||||
}
|
||||
|
||||
return l;
|
||||
}
|
||||
|
||||
static gint
|
||||
screensaver_cmp_func (gconstpointer a, gconstpointer b)
|
||||
{
|
||||
const Screensaver *s1 = a;
|
||||
const Screensaver *s2 = b;
|
||||
|
||||
return strcmp (s1->name, s2->name);
|
||||
}
|
||||
|
||||
static GList*
|
||||
screensaver_list_load (GHashTable *savers_hash)
|
||||
{
|
||||
GList *l = NULL;
|
||||
|
||||
gchar *userdir;
|
||||
|
||||
l = screensaver_list_prepend_dir (savers_hash,
|
||||
l, GNOMECC_SCREENSAVERS_DIR);
|
||||
|
||||
userdir = g_concat_dir_and_file (g_get_home_dir (), ".screensavers");
|
||||
l = screensaver_list_prepend_dir (savers_hash,
|
||||
l, userdir);
|
||||
g_free (userdir);
|
||||
|
||||
/* FIXME: Does not work with utf8 */
|
||||
l = g_list_sort (l, screensaver_cmp_func);
|
||||
return l;
|
||||
}
|
||||
|
||||
Preferences *
|
||||
preferences_new (void)
|
||||
{
|
||||
|
@ -162,6 +230,8 @@ preferences_new (void)
|
|||
|
||||
prefs = g_new0 (Preferences, 1);
|
||||
|
||||
prefs->savers_hash = g_hash_table_new (g_str_hash, g_str_equal);
|
||||
|
||||
/* Load default values */
|
||||
preferences_load_from_xrdb (prefs);
|
||||
|
||||
|
@ -188,6 +258,8 @@ preferences_clone (Preferences *prefs)
|
|||
|
||||
new_prefs = g_new0 (Preferences, 1);
|
||||
|
||||
new_prefs->savers_hash = g_hash_table_new (g_str_hash, g_str_equal);
|
||||
|
||||
new_prefs->config_db = g_tree_new ((GCompareFunc) strcmp);
|
||||
|
||||
new_prefs->selection_mode = prefs->selection_mode;
|
||||
|
@ -219,9 +291,37 @@ preferences_destroy (Preferences *prefs)
|
|||
}
|
||||
|
||||
if (prefs->programs_list) g_free (prefs->programs_list);
|
||||
g_hash_table_destroy (prefs->savers_hash);
|
||||
g_free (prefs);
|
||||
}
|
||||
|
||||
static void
|
||||
clean_saver_list (Preferences *prefs)
|
||||
{
|
||||
GList *l, *next;
|
||||
Screensaver *saver;
|
||||
|
||||
l = prefs->screensavers;
|
||||
while (l)
|
||||
{
|
||||
saver = l->data;
|
||||
|
||||
if ((saver->command_line
|
||||
&& !rc_command_exists (saver->command_line))
|
||||
|| (saver->compat_command_line
|
||||
&& !rc_command_exists (saver->compat_command_line))
|
||||
|| !(saver->command_line || saver->compat_command_line))
|
||||
{
|
||||
prefs->invalidsavers = g_list_append (prefs->invalidsavers, l->data);
|
||||
next = l->next;
|
||||
prefs->screensavers = g_list_remove_link (prefs->screensavers, l);
|
||||
l = next;
|
||||
continue;
|
||||
}
|
||||
l = l->next;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
preferences_load (Preferences *prefs)
|
||||
{
|
||||
|
@ -230,7 +330,11 @@ preferences_load (Preferences *prefs)
|
|||
if (!preferences_load_from_file (prefs))
|
||||
preferences_load_from_xrdb (prefs);
|
||||
|
||||
g_assert (prefs->screensavers == NULL);
|
||||
prefs->screensavers = screensaver_list_load (prefs->savers_hash);
|
||||
|
||||
read_prefs_from_db (prefs);
|
||||
clean_saver_list (prefs);
|
||||
|
||||
prefs->selection_mode =
|
||||
gnome_config_get_int ("/Screensaver/Default/selection_mode=3");
|
||||
|
@ -325,8 +429,10 @@ preferences_read_xml (xmlDocPtr xml_doc)
|
|||
prefs->lock_timeout = xml_read_int (node);
|
||||
else if (!strcmp (node->name, "cycle"))
|
||||
prefs->cycle = xml_read_int (node);
|
||||
#if 0
|
||||
else if (!strcmp (node->name, "programs"))
|
||||
prefs->screensavers = xml_get_programs_list (node);
|
||||
#endif
|
||||
else if (!strcmp (node->name, "selection-mode"))
|
||||
prefs->selection_mode = xml_read_int (node);
|
||||
else if (!strcmp (node->name, "use-dpms"))
|
||||
|
@ -449,12 +555,50 @@ screensaver_remove (Screensaver *saver, GList *screensavers)
|
|||
|
||||
return g_list_remove_link (screensavers, saver->link);
|
||||
}
|
||||
#if 0
|
||||
static void
|
||||
parse_select_default (GString *s, xmlNodePtr node)
|
||||
{
|
||||
for (node = node->childs; node != NULL; node = node->next)
|
||||
{
|
||||
if (strcmp (node->name, "option"))
|
||||
continue;
|
||||
if (xmlGetProp (node, "test"))
|
||||
continue;
|
||||
g_string_append (s, xmlGetProp (node, ""
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
static void
|
||||
parse_arg_default (GString *s, xmlNodePtr node)
|
||||
{
|
||||
gchar *arg;
|
||||
gchar *val;
|
||||
gchar **arr;
|
||||
|
||||
arg = g_strdup (xmlGetProp (node, "arg"));
|
||||
val = g_strdup (xmlGetProp (node, "default"));
|
||||
if (!val)
|
||||
return;
|
||||
arr = g_strsplit (arg, "%", -1);
|
||||
if (!arr)
|
||||
return;
|
||||
|
||||
g_string_append_c (s, ' ');
|
||||
g_string_append (s, arr[0]);
|
||||
g_string_append (s, val);
|
||||
if (arr[1] && arg[2])
|
||||
g_string_append (s, arr[2]);
|
||||
}
|
||||
|
||||
Screensaver *
|
||||
screensaver_read_xml (xmlNodePtr saver_node)
|
||||
{
|
||||
Screensaver *saver;
|
||||
xmlNodePtr node;
|
||||
GString *args;
|
||||
gboolean have_args = FALSE;
|
||||
|
||||
if (strcmp (saver_node->name, "screensaver"))
|
||||
return NULL;
|
||||
|
@ -462,19 +606,55 @@ screensaver_read_xml (xmlNodePtr saver_node)
|
|||
saver = screensaver_new ();
|
||||
saver->enabled = FALSE;
|
||||
|
||||
saver->name = g_strdup (xmlGetProp (saver_node, "name"));
|
||||
saver->label = g_strdup (xmlGetProp (saver_node, "_label"));
|
||||
|
||||
args = g_string_new (saver->name);
|
||||
|
||||
for (node = saver_node->childs; node; node = node->next) {
|
||||
if (!strcmp (node->name, "name"))
|
||||
saver->name = g_strdup (xmlNodeGetContent (node));
|
||||
else if (!strcmp (node->name, "command-line"))
|
||||
if (!strcmp (node->name, "command-line"))
|
||||
saver->command_line =
|
||||
g_strdup (xmlNodeGetContent (node));
|
||||
else if (!strcmp (node->name, "visual"))
|
||||
saver->visual = g_strdup (xmlNodeGetContent (node));
|
||||
else if (!strcmp (node->name, "enabled"))
|
||||
saver->enabled = xml_read_bool (node);
|
||||
else if (!strcmp (node->name, "_description"))
|
||||
saver->description = g_strdup (xmlNodeGetContent (node));
|
||||
else if (!strcmp (node->name, "fullcommand"))
|
||||
saver->compat_command_line = g_strconcat (saver->name, " ", xmlGetProp (node, "arg"), NULL);
|
||||
else if (!strcmp (node->name, "number"))
|
||||
{
|
||||
parse_arg_default (args, node);
|
||||
have_args = TRUE;
|
||||
}
|
||||
else if (!strcmp (node->name, "command"))
|
||||
{
|
||||
g_string_append_c (args, ' ');
|
||||
g_string_append (args, xmlGetProp (node, "arg"));
|
||||
have_args = TRUE;
|
||||
}
|
||||
else if (!strcmp (node->name, "fakepreview"))
|
||||
{
|
||||
saver->fakepreview = g_concat_dir_and_file (GNOMECC_PIXMAPS_DIR "/screensavers", xmlNodeGetContent (node));
|
||||
}
|
||||
else if (!strcmp (node->name, "fake"))
|
||||
{
|
||||
saver->fakes = g_list_append (saver->fakes, g_strdup (xmlGetProp (node, "name")));
|
||||
}
|
||||
}
|
||||
|
||||
if (have_args)
|
||||
{
|
||||
if (saver->compat_command_line)
|
||||
{
|
||||
g_warning ("Huh? Argument metadata and a fullcommand?");
|
||||
}
|
||||
else
|
||||
saver->command_line = g_strdup (args->str);
|
||||
}
|
||||
|
||||
g_string_free (args, TRUE);
|
||||
|
||||
return saver;
|
||||
}
|
||||
|
@ -495,6 +675,35 @@ screensaver_write_xml (Screensaver *saver)
|
|||
return saver_node;
|
||||
}
|
||||
|
||||
Screensaver *
|
||||
screensaver_new_from_file (const gchar *filename)
|
||||
{
|
||||
Screensaver *saver;
|
||||
xmlDocPtr doc;
|
||||
xmlNodePtr node;
|
||||
|
||||
g_return_val_if_fail (filename != NULL, NULL);
|
||||
|
||||
doc = xmlParseFile (filename);
|
||||
if (!doc)
|
||||
return NULL;
|
||||
|
||||
node = doc->root;
|
||||
if (!node)
|
||||
{
|
||||
xmlFreeDoc (doc);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
saver = screensaver_read_xml (node);
|
||||
if (saver)
|
||||
saver->filename = g_strdup (filename);
|
||||
xmlFreeDoc (doc);
|
||||
|
||||
return saver;
|
||||
}
|
||||
|
||||
|
||||
char *
|
||||
screensaver_get_desc (Screensaver *saver)
|
||||
{
|
||||
|
|
|
@ -46,12 +46,17 @@ struct _Screensaver
|
|||
{
|
||||
guint id;
|
||||
gchar *name;
|
||||
gchar *filename;
|
||||
gchar *label;
|
||||
gchar *description;
|
||||
gchar *command_line;
|
||||
gchar *compat_command_line;
|
||||
gchar *visual;
|
||||
gboolean enabled;
|
||||
GList *link;
|
||||
|
||||
gchar *fakepreview;
|
||||
GList *fakes;
|
||||
};
|
||||
|
||||
struct _Preferences
|
||||
|
@ -79,11 +84,14 @@ struct _Preferences
|
|||
SelectionMode selection_mode;
|
||||
|
||||
GList *screensavers;
|
||||
GHashTable *savers_hash;
|
||||
|
||||
gint frozen; /* TRUE if we shouldn't reflect
|
||||
* preference changes in capplet */
|
||||
GTree *config_db; /* key-value database of config options */
|
||||
|
||||
GList *invalidsavers;
|
||||
|
||||
/* Settings that are not stored in .xscreensaver ... */
|
||||
|
||||
gboolean power_management;
|
||||
|
@ -105,6 +113,7 @@ Preferences *preferences_read_xml (xmlDocPtr xml_doc);
|
|||
xmlDocPtr preferences_write_xml (Preferences *prefs);
|
||||
|
||||
Screensaver *screensaver_new (void);
|
||||
Screensaver *screensaver_new_from_file (const gchar *filename);
|
||||
void screensaver_destroy (Screensaver *saver);
|
||||
|
||||
GList *screensaver_add (Screensaver *saver, GList *screensavers);
|
||||
|
|
|
@ -90,6 +90,9 @@ static void set_random_timeout (PrefsWidget *prefs_widget,
|
|||
static void popup_item_menu (ETable *table,
|
||||
int row, int col, GdkEvent *event,
|
||||
PrefsWidget *prefs_widget);
|
||||
static void double_click_cb (ETable *table,
|
||||
int row, int col, GdkEvent *event,
|
||||
PrefsWidget *prefs_widget);
|
||||
|
||||
static void about_cb (GtkWidget *widget,
|
||||
PrefsWidget *prefs_widget);
|
||||
|
@ -237,9 +240,15 @@ prefs_widget_init (PrefsWidget *prefs_widget)
|
|||
gtk_signal_connect (GTK_OBJECT (table), "selection_change",
|
||||
GTK_SIGNAL_FUNC (selection_changed_cb),
|
||||
prefs_widget);
|
||||
/* Disabled for now -- no need for Add/Remove/About */
|
||||
#if 0
|
||||
gtk_signal_connect (GTK_OBJECT (table), "right_click",
|
||||
GTK_SIGNAL_FUNC (popup_item_menu),
|
||||
prefs_widget);
|
||||
#endif
|
||||
gtk_signal_connect (GTK_OBJECT (table), "double_click",
|
||||
GTK_SIGNAL_FUNC (double_click_cb),
|
||||
prefs_widget);
|
||||
|
||||
widget = WID ("mode_option");
|
||||
option_menu_connect (GTK_OPTION_MENU (widget),
|
||||
|
@ -604,7 +613,12 @@ model_set_value_at (ETableModel *etm,
|
|||
static gboolean
|
||||
model_is_cell_editable (ETableModel *etm, int col, int row, void *data)
|
||||
{
|
||||
PrefsWidget *prefs_widget = PREFS_WIDGET (data);
|
||||
|
||||
if (prefs_widget->selection_mode == SM_CHOOSE_FROM_LIST)
|
||||
return (col == 0);
|
||||
else
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void *
|
||||
|
@ -703,6 +717,7 @@ static gint
|
|||
random_timeout_cb (PrefsWidget *prefs_widget)
|
||||
{
|
||||
GList *l, *old;
|
||||
gboolean skippedwc = FALSE, skippedvw = FALSE;
|
||||
|
||||
g_return_val_if_fail (prefs_widget != NULL, FALSE);
|
||||
|
||||
|
@ -716,6 +731,35 @@ random_timeout_cb (PrefsWidget *prefs_widget)
|
|||
/* Handles both "l initially NULL" and "end of list" */
|
||||
if (!l)
|
||||
l = prefs_widget->screensavers;
|
||||
old = l;
|
||||
/* Strip out vidwhacker and webcollage -- don't want to sneak
|
||||
* those into a random mode if the user didn't select them.
|
||||
* Especially as a preview. */
|
||||
while (l)
|
||||
{
|
||||
if (skippedwc && skippedvw && old == l)
|
||||
{
|
||||
show_blank_preview ();
|
||||
return FALSE;
|
||||
}
|
||||
if (!strcmp (((Screensaver*)l->data)->name, "webcollage"))
|
||||
{
|
||||
skippedwc = TRUE;
|
||||
l = l->next;
|
||||
if (!l)
|
||||
l = prefs_widget->screensavers;
|
||||
continue;
|
||||
}
|
||||
if (!strcmp (((Screensaver*)l->data)->name, "vidwhacker"))
|
||||
{
|
||||
skippedvw = TRUE;
|
||||
l = l->next;
|
||||
if (!l)
|
||||
l = prefs_widget->screensavers;
|
||||
continue;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
/* Skip the non-enabled ones */
|
||||
|
@ -812,6 +856,14 @@ popup_item_menu (ETable *table,
|
|||
event->button.button, event->button.time);
|
||||
}
|
||||
|
||||
static void
|
||||
double_click_cb (ETable *table,
|
||||
int row, int col, GdkEvent *event,
|
||||
PrefsWidget *prefs_widget)
|
||||
{
|
||||
settings_cb (NULL, prefs_widget);
|
||||
}
|
||||
|
||||
static void
|
||||
about_cb (GtkWidget *widget, PrefsWidget *prefs_widget)
|
||||
{
|
||||
|
@ -823,7 +875,11 @@ about_cb (GtkWidget *widget, PrefsWidget *prefs_widget)
|
|||
label = gtk_label_new (desc);
|
||||
gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
|
||||
|
||||
#if 0
|
||||
name = screensaver_get_label (prefs_widget->selected_saver->name);
|
||||
#endif
|
||||
name = g_strdup (prefs_widget->selected_saver->label);
|
||||
|
||||
title = g_strdup_printf ("About %s\n", name);
|
||||
g_free (name);
|
||||
|
||||
|
@ -843,6 +899,19 @@ about_cb (GtkWidget *widget, PrefsWidget *prefs_widget)
|
|||
gtk_widget_show_all (dlg);
|
||||
}
|
||||
|
||||
static void
|
||||
prefs_ok_cb (ScreensaverPrefsDialog *dlg, PrefsWidget *widget)
|
||||
{
|
||||
if (dlg->saver == widget->selected_saver)
|
||||
show_preview (widget->selected_saver);
|
||||
}
|
||||
|
||||
static void
|
||||
prefs_demo_cb (ScreensaverPrefsDialog *dlg, PrefsWidget *widget)
|
||||
{
|
||||
show_preview (widget->selected_saver);
|
||||
}
|
||||
|
||||
static void
|
||||
settings_cb (GtkWidget *button, PrefsWidget *widget)
|
||||
{
|
||||
|
@ -851,14 +920,12 @@ settings_cb (GtkWidget *button, PrefsWidget *widget)
|
|||
if (!widget->selected_saver) return;
|
||||
|
||||
dialog = screensaver_prefs_dialog_new (widget->selected_saver);
|
||||
#if 0
|
||||
gtk_signal_connect (GTK_OBJECT (dialog), "ok-clicked",
|
||||
GTK_SIGNAL_FUNC (screensaver_prefs_ok_cb),
|
||||
gtk_signal_connect_after (GTK_OBJECT (dialog), "ok-clicked",
|
||||
GTK_SIGNAL_FUNC (prefs_ok_cb),
|
||||
widget);
|
||||
gtk_signal_connect (GTK_OBJECT (dialog), "demo",
|
||||
gtk_signal_connect_after (GTK_OBJECT (dialog), "demo",
|
||||
GTK_SIGNAL_FUNC (prefs_demo_cb),
|
||||
widget);
|
||||
#endif
|
||||
gtk_widget_show_all (dialog);
|
||||
}
|
||||
|
||||
|
|
|
@ -45,6 +45,8 @@
|
|||
static GtkWidget *preview_window;
|
||||
static pid_t preview_pid;
|
||||
static int timeout_id;
|
||||
static int expose_id = 0;
|
||||
static GdkPixbuf *pixbuf = NULL;
|
||||
|
||||
#if 0
|
||||
|
||||
|
@ -63,10 +65,29 @@ print_args (char **args)
|
|||
|
||||
#endif
|
||||
|
||||
static void
|
||||
expose_func (GtkWidget *widget, GdkEventExpose *event, gpointer data)
|
||||
{
|
||||
if (!pixbuf)
|
||||
return;
|
||||
|
||||
gdk_pixbuf_render_to_drawable
|
||||
(pixbuf, (GdkDrawable *) preview_window->window,
|
||||
preview_window->style->fg_gc[0],
|
||||
event->area.x, event->area.y,
|
||||
event->area.x, event->area.y,
|
||||
event->area.width, event->area.height,
|
||||
GDK_RGB_DITHER_NORMAL, 0, 0);
|
||||
}
|
||||
|
||||
void
|
||||
set_preview_window (GtkWidget *widget)
|
||||
{
|
||||
if (expose_id)
|
||||
gtk_signal_disconnect (GTK_OBJECT (preview_window), expose_id);
|
||||
preview_window = widget;
|
||||
expose_id = gtk_signal_connect (GTK_OBJECT (preview_window),
|
||||
"expose_event", expose_func, NULL);
|
||||
}
|
||||
|
||||
static char **
|
||||
|
@ -193,6 +214,14 @@ static void
|
|||
show_screensaver (GdkWindow *window, Screensaver *saver, pid_t *pid)
|
||||
{
|
||||
char **args;
|
||||
gchar *command_line;
|
||||
|
||||
if (saver->command_line)
|
||||
command_line = saver->command_line;
|
||||
else
|
||||
{
|
||||
command_line = saver->compat_command_line;
|
||||
}
|
||||
|
||||
*pid = fork ();
|
||||
|
||||
|
@ -203,7 +232,7 @@ show_screensaver (GdkWindow *window, Screensaver *saver, pid_t *pid)
|
|||
else if (*pid == 0) {
|
||||
nice (20); /* Very low priority */
|
||||
|
||||
args = g_strsplit (saver->command_line, " ", -1);
|
||||
args = g_strsplit (command_line, " ", -1);
|
||||
args = fix_arguments (args);
|
||||
args = strip_arg (args, "-root");
|
||||
args = add_window_arg (args, window);
|
||||
|
@ -222,7 +251,6 @@ show_screensaver (GdkWindow *window, Screensaver *saver, pid_t *pid)
|
|||
static gint
|
||||
show_screensaver_timeout (void)
|
||||
{
|
||||
GdkPixbuf *pixbuf;
|
||||
int ret;
|
||||
|
||||
ret = waitpid (preview_pid, NULL, WNOHANG);
|
||||
|
@ -231,6 +259,9 @@ show_screensaver_timeout (void)
|
|||
g_error ("waitpid: %s", g_strerror (errno));
|
||||
}
|
||||
else if (ret > 0) {
|
||||
if (pixbuf)
|
||||
gdk_pixbuf_unref (pixbuf);
|
||||
|
||||
pixbuf = gdk_pixbuf_new_from_file
|
||||
(GNOMECC_PIXMAPS_DIR "/no-hack.png");
|
||||
gdk_pixbuf_render_to_drawable
|
||||
|
@ -249,13 +280,33 @@ show_preview (Screensaver *saver)
|
|||
{
|
||||
/* Note: kill this next line for a very interesting effect ... */
|
||||
close_preview ();
|
||||
if (!saver->command_line) return;
|
||||
if (!(saver->command_line || saver->compat_command_line || saver->fakepreview)) return;
|
||||
gtk_widget_map (preview_window);
|
||||
|
||||
if (pixbuf)
|
||||
{
|
||||
gdk_pixbuf_unref (pixbuf);
|
||||
pixbuf = NULL;
|
||||
}
|
||||
|
||||
if (saver->fakepreview)
|
||||
{
|
||||
pixbuf = gdk_pixbuf_new_from_file (saver->fakepreview);
|
||||
gdk_pixbuf_render_to_drawable
|
||||
(pixbuf, (GdkDrawable *) preview_window->window,
|
||||
preview_window->style->fg_gc[0], 0, 0, 0, 0,
|
||||
gdk_pixbuf_get_width (pixbuf),
|
||||
gdk_pixbuf_get_height (pixbuf),
|
||||
GDK_RGB_DITHER_NONE, 0, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
show_screensaver (preview_window->window, saver, &preview_pid);
|
||||
timeout_id =
|
||||
gtk_timeout_add (500, (GtkFunction)
|
||||
show_screensaver_timeout, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
close_preview (void)
|
||||
|
@ -275,11 +326,12 @@ close_preview (void)
|
|||
void
|
||||
show_blank_preview (void)
|
||||
{
|
||||
GdkPixbuf *pixbuf;
|
||||
|
||||
close_preview ();
|
||||
gtk_widget_map (preview_window);
|
||||
|
||||
if (pixbuf)
|
||||
gdk_pixbuf_unref (pixbuf);
|
||||
|
||||
pixbuf = gdk_pixbuf_new_from_file (GNOMECC_PIXMAPS_DIR "/blank-screen.png");
|
||||
gdk_pixbuf_render_to_drawable
|
||||
(pixbuf, (GdkDrawable *) preview_window->window,
|
||||
|
|
|
@ -242,13 +242,13 @@ get_screensaver_dir_list (void)
|
|||
return screensaver_dir_list;
|
||||
}
|
||||
|
||||
/* command_exists
|
||||
/* rc_command_exists
|
||||
*
|
||||
* Given a command line, determines if the command may be executed
|
||||
*/
|
||||
|
||||
static gboolean
|
||||
command_exists (char *command)
|
||||
gboolean
|
||||
rc_command_exists (char *command)
|
||||
{
|
||||
GList *screensaver_dir_list;
|
||||
GList *node;
|
||||
|
@ -342,7 +342,7 @@ parse_screensaver (const char *line)
|
|||
}
|
||||
|
||||
h->command_line = strip_whitespace (line);
|
||||
if (!command_exists (h->command_line)) {
|
||||
if (!rc_command_exists (h->command_line)) {
|
||||
screensaver_destroy (h);
|
||||
return NULL;
|
||||
}
|
||||
|
@ -355,8 +355,8 @@ parse_screensaver (const char *line)
|
|||
|
||||
/* Adapted from xscreensaver 3.24 driver/prefs.c line 1076 ... */
|
||||
|
||||
GList *
|
||||
parse_screensaver_list (char *list)
|
||||
void
|
||||
parse_screensaver_list (GHashTable *savers_hash, char *list)
|
||||
{
|
||||
int start = 0;
|
||||
int end = 0;
|
||||
|
@ -369,6 +369,9 @@ parse_screensaver_list (char *list)
|
|||
GList *list_head = NULL, *list_tail = NULL;
|
||||
Screensaver *saver;
|
||||
|
||||
g_return_if_fail (savers_hash != NULL);
|
||||
g_return_if_fail (list != NULL);
|
||||
|
||||
size = strlen (list);
|
||||
|
||||
/* Iterate over the lines in `d' (the string with newlines)
|
||||
|
@ -392,19 +395,23 @@ parse_screensaver_list (char *list)
|
|||
|
||||
saver = parse_screensaver (list + start);
|
||||
if (saver) {
|
||||
saver->id = count++;
|
||||
if (saver->enabled) number_enabled++;
|
||||
total++;
|
||||
list_tail = g_list_append (list_tail, saver);
|
||||
if (!list_head) list_head = list_tail;
|
||||
list_tail = g_list_last (list_tail);
|
||||
saver->link = list_tail;
|
||||
if (saver->enabled)
|
||||
{
|
||||
Screensaver *real_saver;
|
||||
real_saver = g_hash_table_lookup (savers_hash,
|
||||
saver->name);
|
||||
if (real_saver)
|
||||
{
|
||||
real_saver->enabled = TRUE;
|
||||
real_saver->command_line =
|
||||
g_strdup (saver->command_line);
|
||||
}
|
||||
}
|
||||
screensaver_destroy (saver);
|
||||
}
|
||||
|
||||
start = end + 1;
|
||||
}
|
||||
|
||||
return list_head;
|
||||
}
|
||||
|
||||
gchar *
|
||||
|
|
|
@ -32,7 +32,7 @@ double parse_float_resource (char *res);
|
|||
guint parse_time_resource (char *res, gboolean sec);
|
||||
guint parse_seconds_resource (char *res);
|
||||
gdouble parse_minutes_resource (char *res);
|
||||
GList *parse_screensaver_list (char *list);
|
||||
void parse_screensaver_list (GHashTable *savers_hash, char *list);
|
||||
|
||||
gchar *write_boolean (gboolean value);
|
||||
gchar *write_integer (gint value);
|
||||
|
@ -47,4 +47,6 @@ int string_columns (const char *string, int length, int start);
|
|||
|
||||
GList *get_screensaver_dir_list (void);
|
||||
|
||||
gboolean rc_command_exists (char *command);
|
||||
|
||||
#endif /* __RC_PARSE_H */
|
||||
|
|
|
@ -741,32 +741,38 @@ static xmlDocPtr
|
|||
get_argument_data (Screensaver *saver)
|
||||
{
|
||||
xmlDocPtr doc;
|
||||
gchar *file_name;
|
||||
gchar *lang;
|
||||
xmlNodePtr node;
|
||||
gboolean options = FALSE;
|
||||
|
||||
g_return_val_if_fail (saver != NULL, NULL);
|
||||
g_return_val_if_fail (saver->name != NULL, NULL);
|
||||
g_return_val_if_fail (saver->filename != NULL, NULL);
|
||||
|
||||
lang = g_getenv ("LANG");
|
||||
if (lang)
|
||||
lang = g_strconcat (lang, "/", NULL);
|
||||
else
|
||||
lang = g_strdup ("");
|
||||
doc = xmlParseFile (saver->filename);
|
||||
if (!doc)
|
||||
return NULL;
|
||||
|
||||
file_name = g_strconcat (GNOMECC_SCREENSAVERS_DIR "/screensavers/",
|
||||
lang, saver->name, ".xml", NULL);
|
||||
doc = xmlParseFile (file_name);
|
||||
g_free (file_name);
|
||||
|
||||
/* Fall back on default language if given language is not found */
|
||||
if (!doc && *lang != '\0') {
|
||||
file_name = g_strconcat (GNOMECC_SCREENSAVERS_DIR "/screensavers/",
|
||||
saver->name, ".xml", NULL);
|
||||
doc = xmlParseFile (file_name);
|
||||
g_free (file_name);
|
||||
if (!(doc->root && doc->root->childs))
|
||||
{
|
||||
xmlFreeDoc (doc);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
g_free (lang);
|
||||
for (node = doc->root->childs; node != NULL; node = node->next)
|
||||
{
|
||||
if (!strcmp (node->name, "select")
|
||||
|| !strcmp (node->name, "number")
|
||||
|| !strcmp (node->name, "boolean"))
|
||||
{
|
||||
options = TRUE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!options)
|
||||
{
|
||||
xmlFreeDoc (doc);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return doc;
|
||||
}
|
||||
|
@ -1352,7 +1358,7 @@ static GtkWidget *
|
|||
get_basic_screensaver_widget (ScreensaverPrefsDialog *dialog)
|
||||
{
|
||||
GtkWidget *vbox, *label;
|
||||
GList *node;
|
||||
/*GList *node;*/
|
||||
|
||||
vbox = gtk_vbox_new (FALSE, 10);
|
||||
gtk_container_set_border_width (GTK_CONTAINER (vbox), 5);
|
||||
|
@ -1675,20 +1681,15 @@ static gboolean
|
|||
arg_mapping_exists (Screensaver *saver)
|
||||
{
|
||||
struct stat buf;
|
||||
char *filename;
|
||||
gboolean ret;
|
||||
|
||||
if (!saver->name) return FALSE;
|
||||
if (!saver->filename) return FALSE;
|
||||
|
||||
filename = g_strconcat (GNOMECC_SCREENSAVERS_DIR "/screensavers/",
|
||||
saver->name, ".xml", NULL);
|
||||
|
||||
if (stat (filename, &buf))
|
||||
if (stat (saver->filename, &buf))
|
||||
ret = FALSE;
|
||||
else
|
||||
ret = TRUE;
|
||||
|
||||
g_free (filename);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -1730,6 +1731,7 @@ demo_cb (GtkWidget *widget, ScreensaverPrefsDialog *dialog)
|
|||
store_cli (dialog);
|
||||
gtk_signal_emit (GTK_OBJECT (dialog),
|
||||
screensaver_prefs_dialog_signals[DEMO_SIGNAL]);
|
||||
show_blank_preview ();
|
||||
show_demo (dialog->saver);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<screensaver name="3d clock">
|
||||
<screensaver name="3d clock" _label="3d clock">
|
||||
|
||||
<command arg="-root"/>
|
||||
|
||||
|
|
|
@ -1,21 +1,36 @@
|
|||
Screensaversdir = $(GNOMECC_SCREENSAVERS_DIR)
|
||||
Screensavers_DATA = \
|
||||
pixmapsdir = $(GNOMECC_PIXMAPS_DIR)/screensavers
|
||||
|
||||
pixmaps_DATA = \
|
||||
decayscreen.png \
|
||||
distort.png \
|
||||
jigsaw.png \
|
||||
slip.png \
|
||||
vidwhacker.png \
|
||||
webcollage.png
|
||||
|
||||
# This is not _DATA because we install _all_ xml files in install-data-local
|
||||
Screensavers = \
|
||||
3d_clock.xml \
|
||||
ant.xml \
|
||||
atlantis.xml \
|
||||
attraction.xml \
|
||||
blaster.xml \
|
||||
blitspin.xml \
|
||||
bouboule.xml \
|
||||
braid.xml \
|
||||
bsod.xml \
|
||||
bubble3d.xml \
|
||||
bubbles.xml \
|
||||
bumps.xml \
|
||||
cage.xml \
|
||||
ccurve.xml \
|
||||
compass.xml \
|
||||
coral.xml \
|
||||
cosmos.xml \
|
||||
critical.xml \
|
||||
crystal.xml \
|
||||
cynosure.xml \
|
||||
dangerball.xml \
|
||||
decayscreen.xml \
|
||||
deco.xml \
|
||||
deluxe.xml \
|
||||
|
@ -23,21 +38,27 @@ Screensavers_DATA = \
|
|||
discrete.xml \
|
||||
distort.xml \
|
||||
drift.xml \
|
||||
electricsheep.xml \
|
||||
epicycle.xml \
|
||||
extrusion.xml \
|
||||
fadeplot.xml \
|
||||
flag.xml \
|
||||
flame.xml \
|
||||
flow.xml \
|
||||
forest.xml \
|
||||
glplanet.xml \
|
||||
galaxy.xml \
|
||||
gears.xml \
|
||||
gflux.xml \
|
||||
glplanet.xml \
|
||||
gltext.xml \
|
||||
goban.xml \
|
||||
goop.xml \
|
||||
grav.xml \
|
||||
greynetic.xml \
|
||||
halo.xml \
|
||||
helix.xml \
|
||||
hopalong.xml \
|
||||
hyperball.xml \
|
||||
hypercube.xml \
|
||||
ifs.xml \
|
||||
imsmap.xml \
|
||||
|
@ -55,45 +76,91 @@ Screensavers_DATA = \
|
|||
loop.xml \
|
||||
maze.xml \
|
||||
moebius.xml \
|
||||
moire.xml \
|
||||
moire2.xml \
|
||||
moire.xml \
|
||||
molecule.xml \
|
||||
morph3d.xml \
|
||||
mountain.xml \
|
||||
munch.xml \
|
||||
nerverot.xml \
|
||||
noseguy.xml \
|
||||
pedal.xml \
|
||||
penetrate.xml \
|
||||
penrose.xml \
|
||||
petri.xml \
|
||||
phosphor.xml \
|
||||
pipes.xml \
|
||||
pulsar.xml \
|
||||
pyro.xml \
|
||||
qix.xml \
|
||||
rd-bomb.xml \
|
||||
ripples.xml \
|
||||
rocks.xml \
|
||||
rorschach.xml \
|
||||
rotor.xml \
|
||||
rotzoomer.xml \
|
||||
rubiks_cube.xml \
|
||||
rubik.xml \
|
||||
shadebobs.xml \
|
||||
sierpinski3d.xml \
|
||||
sierpinski.xml \
|
||||
slidescreen.xml \
|
||||
slip.xml \
|
||||
sonar.xml \
|
||||
speedmine.xml \
|
||||
sphere.xml \
|
||||
spiral.xml \
|
||||
spotlight.xml \
|
||||
sproingies.xml \
|
||||
squiral.xml \
|
||||
ssystem.xml \
|
||||
stairs.xml \
|
||||
starfish.xml \
|
||||
starwars.xml \
|
||||
stonerview.xml \
|
||||
strange.xml \
|
||||
superquadrics.xml \
|
||||
swirl.xml \
|
||||
t3d.xml \
|
||||
triangle.xml \
|
||||
truchet.xml \
|
||||
vidwhacker.xml \
|
||||
vines.xml \
|
||||
wander.xml \
|
||||
webcollage.xml \
|
||||
whirlwindwarp.xml \
|
||||
whirlygig.xml \
|
||||
worm.xml \
|
||||
xaos.xml \
|
||||
xdaliclock.xml \
|
||||
xearth.xml \
|
||||
xfishtank.xml \
|
||||
xflame.xml \
|
||||
xjack.xml \
|
||||
xlyap.xml \
|
||||
xmatrix.xml \
|
||||
xroger.xml
|
||||
xmountains.xml \
|
||||
xrayswarm.xml \
|
||||
xroger.xml \
|
||||
xsnow.xml \
|
||||
xspirograph.xml \
|
||||
xteevee.xml \
|
||||
zoom.xml
|
||||
|
||||
EXTRA_DIST = $(Screensavers_DATA) README
|
||||
Translatables = $(Screensavers:.xml=.xml.h)
|
||||
$(Translatables): %.xml.h: %.xml
|
||||
$(top_srcdir)/xml-i18n-extract --type=gettext/xml $<
|
||||
|
||||
all: $(Translatables)
|
||||
|
||||
EXTRA_DIST = $(Screensavers) README \
|
||||
$(Translatables)
|
||||
|
||||
CLEANFILES = $(Translatables)
|
||||
|
||||
ADFILE = $(XSCREENSAVER_PREFIX)/lib/X11/app-defaults/XScreenSaver
|
||||
|
||||
install-data-local:
|
||||
$(mkinstalldirs) $(DESTDIR)$(GNOMECC_SCREENSAVERS_DIR)
|
||||
$(INSTALL_DATA) *.xml $(DESTDIR)$(GNOMECC_SCREENSAVERS_DIR)
|
||||
@PERL@ $(top_srcdir)/capplets/screensaver/screensavers/magic.pl --adfile $(ADFILE) --merge $(DESTDIR)$(GNOMECC_SCREENSAVERS_DIR)
|
||||
|
|
3
capplets/screensaver/screensavers/TODO
Normal file
3
capplets/screensaver/screensavers/TODO
Normal file
|
@ -0,0 +1,3 @@
|
|||
* Check for argument mismatch between xscreensaver and xml.
|
||||
* Handle output from xrdb.
|
||||
* Get installed, and run on .xscreensaver at runtime.
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<screensaver name="ant">
|
||||
<screensaver name="ant" _label="Ant">
|
||||
<command arg="-root"/>
|
||||
|
||||
<!-- This is an XLOCKMORE based hack -->
|
||||
|
@ -71,4 +71,5 @@
|
|||
|
||||
|
||||
|
||||
<_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 their path. Then, as they pass over changed pixels, their behavior is influenced. Written by David Bagley.</_description>
|
||||
</screensaver>
|
|
@ -1,7 +1,8 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<screensaver name="atlantis">
|
||||
<screensaver name="atlantis" _label="Atlantis">
|
||||
|
||||
<command arg="-root"/>
|
||||
|
||||
<_description>This is xfishtank writ large: a GL animation of a number of sharks, dolphins, and whales. The swimming motions are great. Originally written by Mark Kilgard.</_description>
|
||||
</screensaver>
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<screensaver name="attraction">
|
||||
<screensaver name="attraction" _label="Attraction (balls)">
|
||||
<command arg="-root"/>
|
||||
<select id="mode">
|
||||
<option id="balls" _label="Balls" arg-set="-mode balls"/>
|
||||
|
@ -36,5 +36,13 @@
|
|||
<number id="color_contrast" _label="Color Contrast"
|
||||
_low-label="Low" _high-label="High" type="slider"
|
||||
low="0" high="25" default="3" arg="-color-shift %"/>
|
||||
</screensaver>
|
||||
<_description>Like qix, this uses a simple simple motion model to generate many different display modes. The control points attract each other up to a certain distance, and then begin to repel each other. The attraction/repulsion is proportional to the distance between any two particles, similar to the strong and weak nuclear forces.
|
||||
|
||||
One of the most interesting ways to watch this hack is simply as bouncing balls, because their motions and interactions with each other are so odd. Sometimes two balls will get into a tight orbit around each other, to be interrupted later by a third, or by the edge of the screen. It looks quite chaotic.
|
||||
|
||||
Written by Jamie Zawinski, based on Lisp code by John Pezaris.</_description>
|
||||
<fake name="Attraction (lines)"/>
|
||||
<fake name="Attraction (poly)"/>
|
||||
<fake name="Attraction (splines)"/>
|
||||
<fake name="Attraction (orbital)"/>
|
||||
</screensaver>
|
8
capplets/screensaver/screensavers/blaster.xml
Normal file
8
capplets/screensaver/screensavers/blaster.xml
Normal file
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<screensaver name="blaster" _label="Blaster">
|
||||
|
||||
<fullcommand arg="-root"/>
|
||||
|
||||
|
||||
<_description>Draws a simulation of flying space-combat robots (cleverly disguised as colored circles) doing battle in front of a moving star field. Written by Jonathan Lin.</_description>
|
||||
</screensaver>
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<screensaver name="blitspin">
|
||||
<screensaver name="blitspin" _label="BlitSpin">
|
||||
|
||||
<command arg="-root"/>
|
||||
|
||||
|
@ -16,4 +16,7 @@
|
|||
<boolean _label="Display screensaver in monochrome." arg-unset=""
|
||||
id="monochrome" test="mono" arg-set="-mono"/>
|
||||
|
||||
<_description>The ``blitspin'' hack repeatedly rotates a bitmap by 90 degrees by using logical operations: the bitmap is divided into quadrants, and the quadrants are shifted clockwise. Then the same thing is done again with progressively smaller quadrants, except that all sub-quadrants of a given size are rotated in parallel. Written by Jamie Zawinski based on some cool SmallTalk code seen in in Byte Magazine in 1981.
|
||||
|
||||
As you watch it, the image appears to dissolve into static and then reconstitute itself, but rotated. You can provide the image to use, as an XBM or XPM file, or tell it to grab a screen image and rotate that.</_description>
|
||||
</screensaver>
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<screensaver name="bouboule">
|
||||
<screensaver name="bouboule" _label="Bouboule">
|
||||
|
||||
<command arg="-root"/>
|
||||
|
||||
|
@ -22,4 +22,5 @@
|
|||
<boolean _label="Display screensaver in monochrome." arg-unset=""
|
||||
id="monochrome" test="mono" arg-set="-mono"/>
|
||||
|
||||
<_description>This draws what looks like a spinning, deforming baloon with varying-sized spots painted on its invisible surface. Written by Jeremie Petit.</_description>
|
||||
</screensaver>
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<screensaver name="braid">
|
||||
<screensaver name="braid" _label="Braid">
|
||||
|
||||
<command arg="-root"/>
|
||||
|
||||
|
@ -11,4 +11,5 @@
|
|||
<boolean _label="Display screensaver in monochrome." arg-unset=""
|
||||
id="monochrome" test="mono" arg-set="-mono"/>
|
||||
|
||||
<_description>Draws random color-cycling inter-braided concentric circles. Written by John Neil.</_description>
|
||||
</screensaver>
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<screensaver name="BSOD">
|
||||
<screensaver name="bsod" _label="BSOD">
|
||||
<command arg="-root"/>
|
||||
<!-- goes from 3 ... INT_MAX -->
|
||||
<number id="speed" _label="Speed" _low-label="Slow" _high-label="Fast"
|
||||
|
@ -10,4 +10,5 @@
|
|||
<option id="color" _label="Full Color"/>
|
||||
<option id="mono" _label="Monochrome" arg-set="-mono" test="mono"/>
|
||||
</select>
|
||||
<_description>BSOD stands for ``Blue Screen of Death.'' The finest in personal computer emulation, this hack simulates popular screen savers from a number of less robust operating systems. Written by Jamie Zawinski.</_description>
|
||||
</screensaver>
|
|
@ -1,7 +1,8 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<screensaver name="bubble3d">
|
||||
<screensaver name="bubble3d" _label="Bubble3D">
|
||||
|
||||
<command arg="-root"/>
|
||||
|
||||
<_description>Draws a stream of rising, undulating 3D bubbles, rising toward the top of the screen, with nice specular reflections. Written by Richard Jones.</_description>
|
||||
</screensaver>
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<screensaver name="bubbles">
|
||||
<screensaver name="bubbles" _label="Bubbles">
|
||||
|
||||
<command arg="-root"/>
|
||||
|
||||
|
@ -20,4 +20,5 @@
|
|||
<boolean _label="Display screensaver in monochrome." arg-unset=""
|
||||
id="monochrome" test="mono" arg-set="-mono"/>
|
||||
|
||||
<_description>This simulates the kind of bubble formation that happens when water boils:small bubbles appear, and as they get closer to each other, they combine to form larger bubbles, which eventually pop. Written by James Macnicol.</_description>
|
||||
</screensaver>
|
8
capplets/screensaver/screensavers/bumps.xml
Normal file
8
capplets/screensaver/screensavers/bumps.xml
Normal file
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<screensaver name="bumps" _label="Bumps">
|
||||
|
||||
<fullcommand arg="-root"/>
|
||||
|
||||
|
||||
<_description>A bit like `Spotlight', except that instead of merely exposing part of your desktop, it creates a bump map from it. Basically, it 3D-izes a roaming section of your desktop, based on color intensity. Written by Shane Smit.</_description>
|
||||
</screensaver>
|
|
@ -1,7 +1,8 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<screensaver name="cage">
|
||||
<screensaver name="cage" _label="Cage">
|
||||
|
||||
<command arg="-root"/>
|
||||
|
||||
<_description>This draws Escher's ``Impossible Cage,'' a 3d analog of a moebius strip, and rotates it in three dimensions. Written by Marcelo Vianna.</_description>
|
||||
</screensaver>
|
8
capplets/screensaver/screensavers/ccurve.xml
Normal file
8
capplets/screensaver/screensavers/ccurve.xml
Normal file
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<screensaver name="ccurve" _label="C Curve">
|
||||
|
||||
<fullcommand arg="-root"/>
|
||||
|
||||
|
||||
<_description>Generates self-similar linear fractals, including the classic ``C Curve.'' Written by Rick Campbell.</_description>
|
||||
</screensaver>
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<screensaver name="compass">
|
||||
<screensaver name="compass" _label="Compass">
|
||||
<command arg="-root"/>
|
||||
<select id="use_db">
|
||||
<option id="db" _label="Use double buffering"/>
|
||||
|
@ -13,4 +13,5 @@
|
|||
<option id="color" _label="Full Color"/>
|
||||
<option id="mono" _label="Monochrome" arg-set="-mono" test="mono"/>
|
||||
</select>
|
||||
<_description>This draws a compass, with all elements spinning about randomly, for that ``lost and nauseous'' feeling. Written by Jamie Zawinski.</_description>
|
||||
</screensaver>
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<screensaver name="coral">
|
||||
<screensaver name="coral" _label="Coral">
|
||||
|
||||
<command arg="-root"/>
|
||||
|
||||
|
@ -16,4 +16,5 @@
|
|||
type="slider" default="2" arg="-delay %" low="1"
|
||||
_high-label="Slower" high="500000"/>
|
||||
|
||||
<_description>Simulates coral growth, albeit somewhat slowly. This image doesn't really do it justice. Written by Frederick Roeber.</_description>
|
||||
</screensaver>
|
10
capplets/screensaver/screensavers/cosmos.xml
Normal file
10
capplets/screensaver/screensavers/cosmos.xml
Normal file
|
@ -0,0 +1,10 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<screensaver name="cosmos" _label="Cosmos">
|
||||
|
||||
<fullcommand arg="-root"/>
|
||||
|
||||
<_description>Draws fireworks and zooming, fading flares. By Tom Campbell. You can find it at <http://www.mindspring.com/~campbell/cosmos/>.
|
||||
|
||||
! (xrdb prevention kludge: whole file) */</_description>
|
||||
|
||||
</screensaver>
|
|
@ -1,7 +1,8 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<screensaver name="critical">
|
||||
<screensaver name="critical" _label="Critical">
|
||||
|
||||
<command arg="-root"/>
|
||||
|
||||
<_description>Draws a system of self-organizing lines. It starts out as random squiggles, but after a few iterations, order begins to appear. Written by Martin Pool.</_description>
|
||||
</screensaver>
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<screensaver name="crystal">
|
||||
<screensaver name="crystal" _label="Crystal">
|
||||
|
||||
<command arg="-root"/>
|
||||
|
||||
|
@ -28,4 +28,5 @@
|
|||
<boolean _label="Cell" arg-unset="-no-cell" id="cell"
|
||||
arg-set="-cell"/>
|
||||
|
||||
<_description>Moving polygons, similar to a kaleidescope (more like a kaleidescope than the hack called `kaleid,' actually.) This one by Jouk Jansen.</_description>
|
||||
</screensaver>
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<screensaver name="cynosure">
|
||||
<screensaver name="cynosure" _label="Cynosure">
|
||||
|
||||
<command arg="-root"/>
|
||||
|
||||
|
@ -19,4 +19,5 @@
|
|||
<boolean _label="Display screensaver in monochrome." arg-unset=""
|
||||
id="monochrome" test="mono" arg-set="-mono"/>
|
||||
|
||||
<_description>A hack similar to `greynetic', but less frenetic. The first implementation was by Stephen Linhart; then Ozymandias G. Desiderata wrote a Java applet clone. That clone was discovered by Jamie Zawinski, and ported to C for inclusion here.</_description>
|
||||
</screensaver>
|
8
capplets/screensaver/screensavers/dangerball.xml
Normal file
8
capplets/screensaver/screensavers/dangerball.xml
Normal file
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<screensaver name="dangerball" _label="DangerBall">
|
||||
|
||||
<fullcommand arg="-root"/>
|
||||
|
||||
<_description>Draws a ball that periodically extrudes many random spikes. Ouch! Written by Jamie Zawinski.</_description>
|
||||
|
||||
</screensaver>
|
BIN
capplets/screensaver/screensavers/decayscreen.png
Normal file
BIN
capplets/screensaver/screensavers/decayscreen.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 23 KiB |
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<screensaver name="decayscreen">
|
||||
<screensaver name="decayscreen" _label="DecayScreen">
|
||||
|
||||
<command arg="-root"/>
|
||||
|
||||
|
@ -11,4 +11,6 @@
|
|||
<boolean _label="Display screensaver in monochrome." arg-unset=""
|
||||
id="monochrome" test="mono" arg-set="-mono"/>
|
||||
|
||||
<fakepreview>decayscreen.png</fakepreview>
|
||||
<_description>This takes an image and makes it melt. You've no doubt seen this effect before, but no screensaver would really be complete without it. It works best if there's something colorful visible. Warning, if the effect continues after the screen saver is off, seek medical attention. Written by David Wald and Vivek Khera.</_description>
|
||||
</screensaver>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<screensaver name="deco">
|
||||
<screensaver name="deco" _label="Deco">
|
||||
|
||||
<command arg="-root"/>
|
||||
|
||||
|
@ -14,4 +14,5 @@
|
|||
<boolean _label="Cycle through colors." arg-unset="-no-cycle"
|
||||
id="color-cycle" arg-set="-cycle"/>
|
||||
|
||||
<_description>This one subdivides and colors rectangles randomly. It looks kind of like Brady-Bunch-era rec-room wall paneling. (Raven says: ``this screensaver is ugly enough to peel paint.'') Written by Jamie Zawinski, inspired by Java code by Michael Bayne.</_description>
|
||||
</screensaver>
|
|
@ -1,7 +1,8 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<screensaver name="deluxe">
|
||||
<screensaver name="deluxe" _label="Deluxe">
|
||||
|
||||
<command arg="-root"/>
|
||||
|
||||
<_description>This draws a pulsing sequence of stars, circles, and lines. It would look better if it was faster, but as far as I can tell, there is no way to make this be both: fast, and flicker-free. Yet another reason X sucks. Written by Jamie Zawinski.</_description>
|
||||
</screensaver>
|
|
@ -1,7 +1,8 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<screensaver name="demon">
|
||||
<screensaver name="demon" _label="Demon">
|
||||
|
||||
<command arg="-root"/>
|
||||
|
||||
<_description>A cellular automaton that starts with a random field, and organizes it into stripes and spirals. Written by David Bagley.</_description>
|
||||
</screensaver>
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<screensaver name="discrete">
|
||||
<screensaver name="discrete" _label="Discrete">
|
||||
|
||||
<command arg="-root"/>
|
||||
|
||||
|
@ -19,4 +19,5 @@
|
|||
<boolean _label="Display screensaver in monochrome." arg-unset=""
|
||||
id="monochrome" test="mono" arg-set="-mono"/>
|
||||
|
||||
<_description>More ``discrete map'' systems, including new variants of Hopalong and Julia, and a few others. Written by Tim Auckland.</_description>
|
||||
</screensaver>
|
BIN
capplets/screensaver/screensavers/distort.png
Normal file
BIN
capplets/screensaver/screensavers/distort.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 57 KiB |
|
@ -1,7 +1,10 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<screensaver name="distort">
|
||||
<screensaver name="distort" _label="Distort">
|
||||
|
||||
<command arg="-root"/>
|
||||
|
||||
<fakepreview>distort.png</fakepreview>
|
||||
|
||||
<_description>This hack grabs an image of the screen, and then lets a transparent lens wander around the screen, magnifying whatever is underneath. Written by Jonas Munsin.</_description>
|
||||
</screensaver>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<screensaver name="drift">
|
||||
<screensaver name="drift" _label="Drift">
|
||||
|
||||
<command arg="-root"/>
|
||||
|
||||
|
@ -25,4 +25,5 @@
|
|||
<boolean _label="Use lissajous figures to get points."
|
||||
arg-unset="-no-liss" id="lissajous" arg-set="-liss"/>
|
||||
|
||||
<_description>How could one possibly describe this except as ``drifting recursive fractal cosmic flames?'' Another fine hack from the Scott Draves collection of fine hacks.</_description>
|
||||
</screensaver>
|
10
capplets/screensaver/screensavers/electricsheep.xml
Normal file
10
capplets/screensaver/screensavers/electricsheep.xml
Normal file
|
@ -0,0 +1,10 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<screensaver name="electricsheep" _label="ElectricSheep">
|
||||
|
||||
|
||||
<_description>ElectricSheep is an xscreensaver module that displays mpeg video of an animated fractal flame. In the background, it contributes render cycles to the next animation. Periodically it uploades completed frames to the server, where they are compressed for distribution to all clients.
|
||||
|
||||
This program is recommended only if you have a high bandwidth connection to the Internet.
|
||||
|
||||
By Scott Draves. You can find it at <http://www.electricsheep.org/>. See that web site for configuration information.</_description>
|
||||
</screensaver>
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<screensaver name="epicycle">
|
||||
<screensaver name="epicycle" _label="Epicycle">
|
||||
|
||||
<command arg="-root"/>
|
||||
|
||||
|
@ -15,4 +15,5 @@
|
|||
<boolean _label="Display screensaver in monochrome." arg-unset=""
|
||||
id="monochrome" test="mono" arg-set="-mono"/>
|
||||
|
||||
<_description>This 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 circle, and so on, several times. These were the basis for the pre-heliocentric model of planetary motion. Written by James Youngman.</_description>
|
||||
</screensaver>
|
6
capplets/screensaver/screensavers/extrusion.xml
Normal file
6
capplets/screensaver/screensavers/extrusion.xml
Normal file
|
@ -0,0 +1,6 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<screensaver name="extrusion" _label="Extrusion">
|
||||
|
||||
|
||||
<_description>Draws various rotating extruded shapes that twist around, lengthen, and turn inside out. Created by David Konerding from the samples that come with the GL Extrusion library by Linas Vepstas.</_description>
|
||||
</screensaver>
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<screensaver name="fadeplot">
|
||||
<screensaver name="fadeplot" _label="FadePlot">
|
||||
|
||||
<command arg="-root"/>
|
||||
|
||||
|
@ -23,4 +23,5 @@
|
|||
<boolean _label="Display screensaver in monochrome." arg-unset=""
|
||||
id="monochrome" test="mono" arg-set="-mono"/>
|
||||
|
||||
<_description>Draws what looks like a waving ribbon following a sinusoidal path. Written by Bas van Gaalen and Charles Vidal.</_description>
|
||||
</screensaver>
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<screensaver name="flag">
|
||||
<screensaver name="flag" _label="Flag">
|
||||
<command arg="-root"/>
|
||||
|
||||
<!-- This is an XLOCKMORE based hack -->
|
||||
|
@ -47,4 +47,5 @@
|
|||
|
||||
|
||||
|
||||
<_description>This draws a waving colored flag, that undulates its way around the screen. The trick is the flag can contain arbitrary text and images. By default, it displays either the current system name and OS type, or a picture of ``Bob,'' but you can replace the text or the image with a command-line option. Written by Charles Vidal and Jamie Zawinski.</_description>
|
||||
</screensaver>
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<screensaver name="flame">
|
||||
<screensaver name="flame" _label="Flame">
|
||||
|
||||
<command arg="-root"/>
|
||||
|
||||
|
@ -24,4 +24,5 @@
|
|||
<boolean _label="Display screensaver in monochrome." arg-unset=""
|
||||
id="monochrome" test="mono" arg-set="-mono"/>
|
||||
|
||||
<_description>Another iterative fractal generator. Written by Scott Draves.</_description>
|
||||
</screensaver>
|
|
@ -1,7 +1,8 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<screensaver name="flow">
|
||||
<screensaver name="flow" _label="Flow">
|
||||
|
||||
<command arg="-root"/>
|
||||
|
||||
<_description>Another series of strange attractors: a flowing series of points, making strange rotational shapes. Written by Jeff Butterworth.</_description>
|
||||
</screensaver>
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<screensaver name="forest">
|
||||
<screensaver name="forest" _label="Forest">
|
||||
|
||||
<command arg="-root"/>
|
||||
|
||||
|
@ -8,15 +8,17 @@
|
|||
type="spinbutton" default="100" arg="-ncolors %" low="1"
|
||||
high="256"/>
|
||||
|
||||
<number _label="Delay between redraws." _low-label="Faster"
|
||||
<!-- I don't seem to have these options -->
|
||||
<!-- <number _label="Delay between redraws." _low-label="Faster"
|
||||
id="cycles" type="slider" default="2" arg="-cycles %"
|
||||
low="1" _high-label="Slower" high="500000"/>
|
||||
|
||||
<number _label="Number of trees to use." _low-label="Count:"
|
||||
id="count" type="spinbutton" default="100" arg="-count %"
|
||||
low="1" high="1000"/>
|
||||
low="1" high="1000"/>-->
|
||||
|
||||
<boolean _label="Display screensaver in monochrome." arg-unset=""
|
||||
id="monochrome" test="mono" arg-set="-mono"/>
|
||||
|
||||
<_description>This draws fractal trees. Written by Peter Baumung. Everybody loves fractals, right?</_description>
|
||||
</screensaver>
|
|
@ -1,7 +1,8 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<screensaver name="galaxy">
|
||||
<screensaver name="galaxy" _label="Galaxy">
|
||||
|
||||
<command arg="-root"/>
|
||||
|
||||
<_description>This draws spinning galaxies, which then collide and scatter their stars to the, uh, four winds or something. Originally an Amiga program by Uli Siegmund.</_description>
|
||||
</screensaver>
|
|
@ -1,7 +1,9 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<screensaver name="gears">
|
||||
<screensaver name="gears" _label="Gears">
|
||||
|
||||
<command arg="-root"/>
|
||||
|
||||
<_description>This draws sets of turning, interlocking gears, rotating in three dimensions. Another GL hack, by Danny Sung, Brian Paul, Ed Mackey, and Jamie Zawinski.</_description>
|
||||
<fake name="Gears (planetary)"/>
|
||||
</screensaver>
|
8
capplets/screensaver/screensavers/gflux.xml
Normal file
8
capplets/screensaver/screensavers/gflux.xml
Normal file
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<screensaver name="gflux" _label="GFlux">
|
||||
|
||||
<fullcommand arg="-root"/>
|
||||
|
||||
<_description>Draws a rippling waves on a rotating wireframe grid, using GL. Written by Josiah Pease.</_description>
|
||||
|
||||
</screensaver>
|
|
@ -1,7 +1,8 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<screensaver name="glplanet">
|
||||
<screensaver name="glplanet" _label="GLPlanet">
|
||||
|
||||
<command arg="-root"/>
|
||||
|
||||
<_description>Draws a planet bouncing around in space. Written by David Konerding. The built-in image is a map of the earth (extracted from `xearth'), but you can wrap any texture around the sphere, e.g., the planetary textures that come with `ssystem'.</_description>
|
||||
</screensaver>
|
9
capplets/screensaver/screensavers/gltext.xml
Normal file
9
capplets/screensaver/screensavers/gltext.xml
Normal file
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<screensaver name="gltext" _label="GLText">
|
||||
|
||||
<fullcommand arg="-root"/>
|
||||
|
||||
<_description>Displays a few lines of text spinning around in a solid 3D font. Written by Jamie Zawinski.</_description>
|
||||
|
||||
<fake name="GLText (clock)"/>
|
||||
</screensaver>
|
6
capplets/screensaver/screensavers/goban.xml
Normal file
6
capplets/screensaver/screensavers/goban.xml
Normal file
|
@ -0,0 +1,6 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<screensaver name="goban" _label="Goban">
|
||||
|
||||
|
||||
<_description>Replays historical games of go (aka wei-chi and baduk) on the screen. By Scott Draves. You can find it at <http://www.draves.org/goban/>.</_description>
|
||||
</screensaver>
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<screensaver name="goop">
|
||||
<screensaver name="goop" _label="Goop">
|
||||
|
||||
<command arg="-root"/>
|
||||
|
||||
|
@ -23,4 +23,5 @@
|
|||
arg-unset="-subtractive" id="additive"
|
||||
arg-set="-additive"/>
|
||||
|
||||
<_description>This draws set of animating, transparent, amoeba-like blobs. The blobs change shape as they wander around the screen, and they are translucent, so you can see the lower blobs through the higher ones, and when one passes over another, their colors merge. Written by Jamie Zawinski. I got the idea for this from a cool mouse pad I have, which achieves the same kind of effect in real life by having several layers plastic with colored oil between them. Written by Jamie Zawinski.</_description>
|
||||
</screensaver>
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<screensaver name="grav">
|
||||
<screensaver name="grav" _label="Grav">
|
||||
|
||||
<command arg="-root"/>
|
||||
|
||||
|
@ -21,4 +21,6 @@
|
|||
<boolean _label="Objects should leave trails behind them."
|
||||
arg-unset="-no-trail" id="trail" arg-set="-trail"/>
|
||||
|
||||
<_description>This program draws a simple orbital simulation. If you turn on trails, it looks kind of like a cloud-chamber photograph. Written by Greg Bowering.</_description>
|
||||
<fake name="Grav (trails)"/>
|
||||
</screensaver>
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<screensaver name="greynetic">
|
||||
<screensaver name="greynetic" _label="Greynetic">
|
||||
|
||||
<command arg="-root"/>
|
||||
|
||||
|
@ -11,4 +11,5 @@
|
|||
<boolean _label="Display screensaver in monochrome." arg-unset=""
|
||||
id="monochrome" test="mono" arg-set="-mono"/>
|
||||
|
||||
<_description>This draws random colored and stippled rectangles. Written by Jamie Zawinski.</_description>
|
||||
</screensaver>
|
|
@ -1,11 +1,11 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<screensaver name="halo">
|
||||
<screensaver name="halo" _label="Halo">
|
||||
|
||||
<command arg="-root"/>
|
||||
|
||||
<number _label="Number of Colors." _low-label="Colors:" id="colors"
|
||||
type="spinbutton" default="100" arg="-ncolors %" low="1"
|
||||
type="spinbutton" default="100" arg="-colors %" low="1"
|
||||
high="256"/>
|
||||
|
||||
<number _label="Number of circles to use." _low-label="Count:"
|
||||
|
@ -28,4 +28,5 @@
|
|||
<boolean _label="Cycle through colormap." arg-unset="-no-cycle"
|
||||
id="cycle" arg-set="-cycle"/>
|
||||
|
||||
<_description>This draws trippy psychedelic circular patterns that hurt to look at. It can also animate the control-points, but that takes a lot of CPU and bandwidth. Written by Jamie Zawinski.</_description>
|
||||
</screensaver>
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<screensaver name="helix">
|
||||
<screensaver name="helix" _label="Helix">
|
||||
|
||||
<command arg="-root"/>
|
||||
|
||||
|
@ -11,4 +11,5 @@
|
|||
<boolean _label="Display screensaver in monochrome." arg-unset=""
|
||||
id="monochrome" test="mono" arg-set="-mono"/>
|
||||
|
||||
<_description>This repeatedly generates spirally string-art-ish patterns. Written by Jamie Zawinski.</_description>
|
||||
</screensaver>
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<screensaver name="hopalong">
|
||||
<screensaver name="hopalong" _label="Hopalong">
|
||||
|
||||
<command arg="-root"/>
|
||||
|
||||
|
@ -19,4 +19,5 @@
|
|||
<boolean _label="Display screensaver in monochrome." arg-unset=""
|
||||
id="monochrome" test="mono" arg-set="-mono"/>
|
||||
|
||||
<_description>This draws lacy fractal patterns, based on iteration in the imaginary plane, from a 1986 Scientific American article. Mostly written by Patrick Naughton.</_description>
|
||||
</screensaver>
|
8
capplets/screensaver/screensavers/hyperball.xml
Normal file
8
capplets/screensaver/screensavers/hyperball.xml
Normal file
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<screensaver name="hyperball" _label="Hyperball">
|
||||
|
||||
<fullcommand arg="-root"/>
|
||||
|
||||
<_description>Hyperball is to hypercube as dodecahedron is to cube: this displays a 2D projection of the sequence of 3D objects which are the projections of the 4D analog to the dodecahedron. Written by Joe Keane.</_description>
|
||||
|
||||
</screensaver>
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<screensaver name="hypercube">
|
||||
<screensaver name="hypercube" _label="Hypercube">
|
||||
|
||||
<command arg="-root"/>
|
||||
|
||||
|
@ -15,4 +15,5 @@
|
|||
<boolean _label="Display screensaver in monochrome." arg-unset=""
|
||||
id="monochrome" test="mono" arg-set="-mono"/>
|
||||
|
||||
<_description>This displays 2D projections of the sequence of 3D objects which are the projections of the 4D analog to the cube: as a square is composed of four lines, each touching two others; and a cube is composed of six squares, each touching four others; a hypercube is composed of eight cubes, each touching six others. To make it easier to visualize the rotation, it uses a different color for the edges of each face. Don't think about it too long, or your brain will melt. Written by Joe Keane, Fritz Mueller, and Jamie Zawinski.</_description>
|
||||
</screensaver>
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<screensaver name="ifs">
|
||||
<screensaver name="ifs" _label="IFS">
|
||||
|
||||
<command arg="-root"/>
|
||||
|
||||
|
@ -11,4 +11,5 @@
|
|||
<boolean _label="Display screensaver in monochrome." arg-unset=""
|
||||
id="monochrome" test="mono" arg-set="-mono"/>
|
||||
|
||||
<_description>This one draws spinning, colliding iterated-function-system images. Written by Massimino Pascal.</_description>
|
||||
</screensaver>
|
|
@ -1,7 +1,10 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<screensaver name="imsmap">
|
||||
<screensaver name="imsmap" _label="IMSmap">
|
||||
|
||||
<command arg="-root"/>
|
||||
|
||||
<_description>This generates random cloud-like patterns. It looks quite different in monochrome and color. The basic idea is to take four points on the edge of the image, and assign each a random ``elevation''. Then find the point between them, and give it a value which is the average of the other four, plus some small random offset. Then coloration is done based on elevation.
|
||||
|
||||
The color selection is done by binding the elevation to either hue, saturation, or brightness, and assigning random values to the others. The ``brightness'' mode tends to yield cloudlike patterns, and the others tend to generate images that look like heat-maps or CAT-scans. Written by Juergen Nickelsen and Jamie Zawinski.</_description>
|
||||
</screensaver>
|
|
@ -1,7 +1,8 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<screensaver name="interference">
|
||||
<screensaver name="interference" _label="Interference">
|
||||
|
||||
<command arg="-root"/>
|
||||
|
||||
<_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. Written by Hannu Mallat.</_description>
|
||||
</screensaver>
|
BIN
capplets/screensaver/screensavers/jigsaw.png
Normal file
BIN
capplets/screensaver/screensavers/jigsaw.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 15 KiB |
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<screensaver name="jigsaw">
|
||||
<screensaver name="jigsaw" _label="Jigsaw">
|
||||
|
||||
<command arg="-root"/>
|
||||
|
||||
|
@ -8,4 +8,7 @@
|
|||
type="slider" default="2" arg="-delay %" low="1"
|
||||
high-label="Slower" high="500000"/>
|
||||
|
||||
<fakepreview>jigsaw.png</fakepreview>
|
||||
|
||||
<_description>This grabs a screen image, carves it up into a jigsaw puzzle, shuffles it, and then solves the puzzle. This works especially well when you feed it an external video signal instead of letting it grab the screen image (actually, I guess this is generally true...) When it is grabbing a video image, it is sometimes pretty hard to guess what the image is going to look like once the puzzle is solved. Written by Jamie Zawinski.</_description>
|
||||
</screensaver>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<screensaver name="julia">
|
||||
<screensaver name="julia" _label="Julia">
|
||||
|
||||
<command arg="-root"/>
|
||||
|
||||
|
@ -19,4 +19,5 @@
|
|||
<boolean _label="Display screensaver in monochrome." arg-unset=""
|
||||
id="monochrome" test="mono" arg-set="-mono"/>
|
||||
|
||||
<_description>This one draws spinning, animating (are you detecting a pattern here yet?) explorations of the Julia set. You've probably seen static images of this fractal form before, but it's a lot of fun to watch in motion as well. One interesting thing is that there is a small swinging dot passing in front of the image, which indicates the control point from which the rest of the image was generated. Written by Sean McCullough.</_description>
|
||||
</screensaver>
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<screensaver name="kaleidescope">
|
||||
<screensaver name="kaleidescope" _label="Kaleidescope">
|
||||
|
||||
<command arg="-root"/>
|
||||
|
||||
|
@ -20,4 +20,5 @@
|
|||
arg-unset="-color_mode nice" id="monochrome"
|
||||
arg-set="-color_mode mono"/>
|
||||
|
||||
<_description>Another clone of an ancient meme, consisting largely of frenetic rotational motion of colored lines. This one is by Ron Tapia. The motion is nice, but I think it needs more solids, or perhaps just brighter colors. More variations in the rotational speed might help, too.</_description>
|
||||
</screensaver>
|
|
@ -1,7 +1,8 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<screensaver name="kumppa">
|
||||
<screensaver name="kumppa" _label="Kumppa">
|
||||
|
||||
<command arg="-root"/>
|
||||
|
||||
<_description>Spiraling, spinning, and very, very fast splashes of color rush toward the screen. Written by Teemu Suutari.</_description>
|
||||
</screensaver>
|
|
@ -1,7 +1,8 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<screensaver name="lament">
|
||||
<screensaver name="lament" _label="Lament">
|
||||
|
||||
<command arg="-root"/>
|
||||
|
||||
<_description>Animates a simulation of Lemarchand's Box, repeatedly solving itself. Requires OpenGL, and a machine with fast hardware support for texture maps. Warning: occasionally opens doors. Written by Jamie Zawinski.</_description>
|
||||
</screensaver>
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<screensaver name="laser">
|
||||
<screensaver name="laser" _label="Laser">
|
||||
|
||||
<command arg="-root"/>
|
||||
|
||||
|
@ -15,4 +15,5 @@
|
|||
<boolean _label="Display screensaver in monochrome." arg-unset=""
|
||||
id="mono" arg-set="-mono"/>
|
||||
|
||||
<_description>Moving radiating lines, that look vaguely like scanning laser beams. Written by Pascal Pensa. (Frankie say: relax.)</_description>
|
||||
</screensaver>
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<screensaver name="lightning">
|
||||
<screensaver name="lightning" _label="Lightning">
|
||||
|
||||
<command arg="-root"/>
|
||||
|
||||
|
@ -11,4 +11,5 @@
|
|||
<boolean _label="Display screensaver in monochrome." arg-unset=""
|
||||
id="monochrome" test="mono" arg-set="-mono"/>
|
||||
|
||||
<_description>This one draws crackling fractal lightning bolts. It's simple, direct, and to the point. If only it had sound... Written by Keith Romberg.</_description>
|
||||
</screensaver>
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<screensaver name="lisa">
|
||||
<screensaver name="lisa" _label="Lisa">
|
||||
|
||||
<command arg="-root"/>
|
||||
|
||||
|
@ -23,4 +23,5 @@
|
|||
<boolean _label="Display screensaver in monochrome." arg-unset=""
|
||||
id="monochrome" test="mono" arg-set="-mono"/>
|
||||
|
||||
<_description>This draws Lisajous loops, by Caleb Cullen. Remember that device they had the Phantom Zone prisoners in during their trial in Superman? I think that was one of these.</_description>
|
||||
</screensaver>
|
|
@ -1,7 +1,8 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<screensaver name="lissie">
|
||||
<screensaver name="lissie" _label="Lissie">
|
||||
|
||||
<command arg="-root"/>
|
||||
|
||||
<_description>Another Lissajous figure. This one draws the progress of circular shapes along a path. Written by Alexander Jolk.</_description>
|
||||
</screensaver>
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<screensaver name="lmorph">
|
||||
<screensaver name="lmorph" _label="LMorph">
|
||||
|
||||
<command arg="-root"/>
|
||||
|
||||
|
@ -22,4 +22,5 @@
|
|||
<boolean _label="Display screensaver in monochrome." arg-unset=""
|
||||
id="monochrome" test="mono" arg-set="-mono"/>
|
||||
|
||||
<_description>This generates random spline-ish line drawings and morphs between them. Written by Sverre H. Huseby and Glenn T. Lines.</_description>
|
||||
</screensaver>
|
|
@ -1,7 +1,8 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<screensaver name="loop">
|
||||
<screensaver name="loop" _label="Loop">
|
||||
|
||||
<command arg="-root"/>
|
||||
|
||||
<_description>This one produces loop-shaped colonies that spawn, age, and eventually die. Written by David Bagley.</_description>
|
||||
</screensaver>
|
510
capplets/screensaver/screensavers/magic.pl.in
Executable file
510
capplets/screensaver/screensavers/magic.pl.in
Executable file
|
@ -0,0 +1,510 @@
|
|||
#!@PERL@ -w
|
||||
#
|
||||
# magic.pl
|
||||
#
|
||||
# Script to convert Xscreensaver cruft into xml files.
|
||||
# Copyright (C) 2001 Ximian, Inc.
|
||||
# Authors:
|
||||
# Richard Hestilow <hestilow@ximian.com>
|
||||
# This program is licensed under the GNU GPL. See COPYING for details.
|
||||
|
||||
use Getopt::Long;
|
||||
|
||||
my $rcfile; # .xscreensaver usually
|
||||
my $adfile; # app defaults file
|
||||
my $outdir;
|
||||
my @merge;
|
||||
my @avoid;
|
||||
my $suffix = ".xml";
|
||||
my $quiet;
|
||||
|
||||
my $help;
|
||||
|
||||
sub usage
|
||||
{
|
||||
print << "EOF"
|
||||
XScreensaver->XML conversion utility
|
||||
Copyright (C) 2001 Ximian, Inc.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
Usage: $0 [options]
|
||||
|
||||
Options:
|
||||
--rcfile <file> XScreensaver RC file
|
||||
--adfile <file> XScreensaver AppDefaults file
|
||||
--outdir <dir> Directory to output to (defaults to current dir)
|
||||
--merge <dirs> Merge with preexisting XML files. If used in
|
||||
conjunction with --outdir, will make copies in
|
||||
the specified output directory rather than modifying
|
||||
the existing files.
|
||||
--avoid <dirs> The opposite of --merge: Will not output XML files
|
||||
that already exist in the specified directories.
|
||||
Note that merging and avoiding the same directory
|
||||
is meaningless.
|
||||
--suffix <suffix> Suffix for output files. Defaults to "$suffix".
|
||||
--quiet Be quiet.
|
||||
--help Display this error message.
|
||||
EOF
|
||||
;
|
||||
exit 1;
|
||||
}
|
||||
|
||||
sub badopt
|
||||
{
|
||||
my $opt = $_[0];
|
||||
|
||||
print "Unknown option $opt\n\n";
|
||||
usage ();
|
||||
}
|
||||
|
||||
sub find_file
|
||||
{
|
||||
my ($file, @dirs) = @_;
|
||||
|
||||
foreach $dir (@dirs)
|
||||
{
|
||||
if (-f "$dir/$file")
|
||||
{
|
||||
return "$dir/$file";
|
||||
}
|
||||
}
|
||||
|
||||
return "";
|
||||
}
|
||||
|
||||
GetOptions ("rcfile=s", \$rcfile,
|
||||
"adfile=s", \$adfile,
|
||||
"outdir=s", \$outdir,
|
||||
"merge=s", \@merge,
|
||||
"avoid=s", \@avoid,
|
||||
"suffix=s", \$suffix,
|
||||
"quiet+", \$quiet,
|
||||
"help+", \$help,
|
||||
"<>", \&badopt);
|
||||
|
||||
if ($help)
|
||||
{
|
||||
usage ();
|
||||
}
|
||||
|
||||
my %savers = ();
|
||||
my @updated_list;
|
||||
my @added_list;
|
||||
|
||||
# Sigh
|
||||
foreach $thefile ($rcfile, $adfile)
|
||||
{
|
||||
unless ($thefile) { next; }
|
||||
|
||||
if ($thefile)
|
||||
{
|
||||
unless (open RCFILE, "<$thefile")
|
||||
{
|
||||
die "Cannot open rcfile $thefile\n";
|
||||
}
|
||||
|
||||
my $fcontents = "";
|
||||
my $progseen = 0;
|
||||
while (<RCFILE>)
|
||||
{
|
||||
if (/\*programs:/)
|
||||
{
|
||||
$progseen = 1;
|
||||
}
|
||||
elsif ($progseen)
|
||||
{
|
||||
$fcontents .= $_;
|
||||
}
|
||||
if (/\\n\n/)
|
||||
{
|
||||
$fcontents =~ s/\\n$//g;
|
||||
last;
|
||||
}
|
||||
}
|
||||
|
||||
foreach $_ (split /\\n\\\n/, $fcontents)
|
||||
{
|
||||
$_ =~ s/\\/ /g;
|
||||
my $name;
|
||||
my $label;
|
||||
my $command;
|
||||
if ($_ =~ /\".+\".+\".+\"/)
|
||||
{
|
||||
# multiple quotes
|
||||
if ($_ =~ /\"(.+)\"\s+((\w+) .+\".+\".+)[\t ]*/)
|
||||
{
|
||||
$label = $1;
|
||||
$name = $3;
|
||||
$command = $2;
|
||||
}
|
||||
}
|
||||
elsif ($_ =~ /\"(.+)\"\s*([\w\-]+) ((.+\w)?)[\t ]+/)
|
||||
{
|
||||
$label = $1;
|
||||
$name = $2;
|
||||
$command = $3;
|
||||
}
|
||||
elsif ($_ =~ /\-?(\w[\w\-]+) ((.+\w)?)[\t ]+/)
|
||||
{
|
||||
if ($1 eq "-") { print "$1 $2\n";}
|
||||
my %saver = ("name" => $1,
|
||||
"command" => $2);
|
||||
$savers{$1} = \%saver;
|
||||
next;
|
||||
}
|
||||
|
||||
if ($name eq "rd-bomb") { print "$label $name $command\n";}
|
||||
if ($name eq "cosmos") { print "$label $name $command\n";}
|
||||
if ($name)
|
||||
{
|
||||
if ($savers{$name} and $label)
|
||||
{
|
||||
if ($name eq "xmountains") { print "erk\n"};
|
||||
my %saver = %{$savers{$name}};
|
||||
my @fakes;
|
||||
if ($saver{"fakes"})
|
||||
{
|
||||
@fakes = @{$saver{"fakes"}};
|
||||
}
|
||||
push @fakes, $label;
|
||||
$saver{"fakes"} = \@fakes;
|
||||
$savers{$name} = \%saver;
|
||||
}
|
||||
else
|
||||
{
|
||||
my %saver = ("label" => $label,
|
||||
"name" => $name,
|
||||
"command" => $command);
|
||||
$savers{$name} = \%saver;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
close RCFILE;
|
||||
}
|
||||
}
|
||||
|
||||
if ($adfile)
|
||||
{
|
||||
my $fcontents = "";
|
||||
|
||||
unless (open ADFILE, "<$adfile")
|
||||
{
|
||||
die "Cannot open app-defaults file $adfile\n";
|
||||
}
|
||||
|
||||
while (<ADFILE>)
|
||||
{
|
||||
$fcontents .= $_;
|
||||
}
|
||||
|
||||
foreach $_ (split /\n\*/, $fcontents)
|
||||
{
|
||||
unless (/hacks\.(.+)\.(.+)\:(.+)/)
|
||||
{
|
||||
next;
|
||||
}
|
||||
unless ($2 eq "documentation" or $2 eq "name")
|
||||
{
|
||||
next;
|
||||
}
|
||||
$_ =~ s/hacks\.(.+)\.(.+)\://g;
|
||||
my $name = $1;
|
||||
my $type = $2;
|
||||
$_ =~ s/[\t ]*\\[\t ]*\n/ /g;
|
||||
$_ =~ s/\n[\t ]/\n/g;
|
||||
$_ =~ s/\.[\t ]+/\. /g;
|
||||
$_ =~ s/[\t ]+\n/\n/g;
|
||||
$_ =~ s/^\n//g;
|
||||
$_ =~ s/\\n/\n/g;
|
||||
$_ =~ s/^[\t ]+//g;
|
||||
$_ =~ s/\n[\t ]/\n/g;
|
||||
$_ =~ s/\</</g;
|
||||
$_ =~ s/\>/>/g;
|
||||
$_ =~ s/[\t ]*\n$//g;
|
||||
$_ =~ s/\n\n\! \(xrdb prevention kludge\: whole file\) \*\///g;
|
||||
my $desc;
|
||||
my $label;
|
||||
if ($type eq "documentation")
|
||||
{
|
||||
$desc = $_;
|
||||
}
|
||||
else
|
||||
{
|
||||
$label = $_;
|
||||
}
|
||||
|
||||
my %saver = ();
|
||||
if ($savers{$name})
|
||||
{
|
||||
%saver = %{$savers{$name}};
|
||||
}
|
||||
$saver{"name"} = $name;
|
||||
if ($desc)
|
||||
{
|
||||
$saver{"desc"} = $desc;
|
||||
}
|
||||
if ($label)
|
||||
{
|
||||
if ($saver{$label})
|
||||
{
|
||||
my @fakes;
|
||||
if ($saver{"fakes"})
|
||||
{
|
||||
@fakes = @{$saver{"fakes"}};
|
||||
}
|
||||
push @fakes, $label;
|
||||
$saver{"fakes"} = \@fakes;
|
||||
}
|
||||
else
|
||||
{
|
||||
$saver{"label"} = $label;
|
||||
}
|
||||
}
|
||||
|
||||
$savers{$name} = \%saver;
|
||||
}
|
||||
close ADFILE;
|
||||
}
|
||||
|
||||
my $key;
|
||||
foreach $key (keys %savers)
|
||||
{
|
||||
my %saver = %{$savers{$key}};
|
||||
my $name = $saver{"name"};
|
||||
my $label = $saver{"label"};
|
||||
if ($key eq "xmountains")
|
||||
{
|
||||
print "$name\n";
|
||||
}
|
||||
my $command = $saver{"command"};
|
||||
my $desc = $saver{"desc"};
|
||||
my @fakes;
|
||||
my $filename = "$name$suffix";
|
||||
my $fullname;
|
||||
my $mergefile;
|
||||
my $mergeexists = 0;
|
||||
my $samefile = 0;
|
||||
my $buf = "";
|
||||
my $str;
|
||||
|
||||
if ($saver{"fakes"}) {
|
||||
@fakes = @{$saver{"fakes"}};
|
||||
}
|
||||
|
||||
if (!$label)
|
||||
{
|
||||
# luckily, we can pretty much assume $name is ascii.
|
||||
$label = $name;
|
||||
my @tmparr = split //, $label;
|
||||
if (scalar (@tmparr))
|
||||
{
|
||||
$tmparr[0] =~ tr/[a-z]/[A-Z]/;
|
||||
$label = join "", @tmparr;
|
||||
}
|
||||
}
|
||||
|
||||
if (@avoid)
|
||||
{
|
||||
my $avoidfile = find_file ($filename, @avoid);
|
||||
if ($avoidfile and -f $avoidfile)
|
||||
{
|
||||
next;
|
||||
}
|
||||
}
|
||||
|
||||
if (@merge)
|
||||
{
|
||||
$mergefile = find_file ($filename, @merge);
|
||||
# FIXME: What about multiple-merge case?
|
||||
if (!$mergefile and scalar (@merge) == 1)
|
||||
{
|
||||
$mergefile = $merge[0] . "/$filename";
|
||||
}
|
||||
if ($mergefile and !$outdir)
|
||||
{
|
||||
$fullname = $mergefile;
|
||||
if (-f $mergefile)
|
||||
{
|
||||
$samefile = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!defined $fullname)
|
||||
{
|
||||
if ($outdir)
|
||||
{
|
||||
unless (-d $outdir)
|
||||
{
|
||||
unless (mkdir $outdir)
|
||||
{
|
||||
die "Cannot create directory $outdir";
|
||||
}
|
||||
}
|
||||
|
||||
$fullname = "$outdir/$filename";
|
||||
}
|
||||
else
|
||||
{
|
||||
$fullname = "$filename";
|
||||
}
|
||||
}
|
||||
|
||||
if (@merge and -f $mergefile)
|
||||
{
|
||||
$mergeexists = 1;
|
||||
}
|
||||
|
||||
if (!$samefile)
|
||||
{
|
||||
unless (open OUTFILE, ">$fullname")
|
||||
{
|
||||
die "Cannot open output file $fullname\n";
|
||||
}
|
||||
}
|
||||
|
||||
# note that we do not print out commands for merging.
|
||||
# this is because we assume the file has argument metadata
|
||||
if ($mergefile and $mergeexists)
|
||||
{
|
||||
unless (open XMLFILE, "<$mergefile")
|
||||
{
|
||||
die "Cannot open file $mergefile for merging\n";
|
||||
}
|
||||
my $opendesc = 0;
|
||||
my $foo;
|
||||
foreach $foo (<XMLFILE>)
|
||||
{
|
||||
if ($foo =~ /\<screensaver.*\>/)
|
||||
{
|
||||
$str = "<screensaver name=\"$name\"";
|
||||
$str .= " _label=\"$label\"";
|
||||
$str .= ">\n";
|
||||
|
||||
if ($samefile)
|
||||
{
|
||||
$buf .= $str;
|
||||
}
|
||||
else
|
||||
{
|
||||
print OUTFILE $str;
|
||||
}
|
||||
}
|
||||
elsif ($foo =~ /\<fake/)
|
||||
{
|
||||
# we handle the fakes later
|
||||
}
|
||||
elsif ($desc and $foo =~ /\<_description\>.*\<\/_description\>/)
|
||||
{
|
||||
$opendesc = 0;
|
||||
}
|
||||
elsif ($desc and $foo =~ /\<_description\>/)
|
||||
{
|
||||
$opendesc = 1;
|
||||
}
|
||||
elsif ($desc and $foo =~ /\<\/_description\>/)
|
||||
{
|
||||
$opendesc = 0;
|
||||
}
|
||||
elsif ($desc and $opendesc)
|
||||
{
|
||||
# part of an old description, do nothing
|
||||
}
|
||||
elsif ($foo =~ /\<\/screensaver\>/)
|
||||
{
|
||||
$str = "";
|
||||
if ($desc and !$opendesc)
|
||||
{
|
||||
$str .= " <_description>$desc</_description>\n";
|
||||
}
|
||||
|
||||
foreach $fake (@fakes)
|
||||
{
|
||||
$str .= " <fake name=\"$fake\"/>\n";
|
||||
}
|
||||
|
||||
$str .= "</screensaver>";
|
||||
|
||||
if ($samefile)
|
||||
{
|
||||
$buf .= $str;
|
||||
}
|
||||
else
|
||||
{
|
||||
print OUTFILE $str;
|
||||
}
|
||||
last;
|
||||
}
|
||||
else
|
||||
{
|
||||
if ($samefile)
|
||||
{
|
||||
$buf .= $foo;
|
||||
}
|
||||
else
|
||||
{
|
||||
print OUTFILE $foo;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
close OUTFILE;
|
||||
unless (open OUTFILE, ">$mergefile")
|
||||
{
|
||||
die "Cannot open output file $mergefile";
|
||||
}
|
||||
|
||||
print OUTFILE $buf;
|
||||
close OUTFILE;
|
||||
|
||||
push @updated_list, $fullname;
|
||||
}
|
||||
else
|
||||
{
|
||||
print OUTFILE "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n";
|
||||
print OUTFILE "<screensaver name=\"$name\"";
|
||||
if ($label)
|
||||
{
|
||||
print OUTFILE " _label=\"$label\"";
|
||||
}
|
||||
print OUTFILE ">\n\n";
|
||||
if ($command)
|
||||
{
|
||||
print OUTFILE " <fullcommand arg=\"$command\"/>\n\n";
|
||||
}
|
||||
if ($desc)
|
||||
{
|
||||
print OUTFILE " <_description>$desc</_description>\n\n";
|
||||
}
|
||||
foreach $fake (@fakes)
|
||||
{
|
||||
print OUTFILE " <fake name=\"$fake\"/>\n";
|
||||
}
|
||||
print OUTFILE "</screensaver>\n";
|
||||
close OUTFILE;
|
||||
|
||||
push @added_list, $fullname;
|
||||
}
|
||||
}
|
||||
|
||||
if ($quiet)
|
||||
{
|
||||
exit 0;
|
||||
}
|
||||
|
||||
my $file;
|
||||
|
||||
if (scalar (@added_list))
|
||||
{
|
||||
print "The following files have been added:\n";
|
||||
foreach $file (@added_list)
|
||||
{
|
||||
print "$file\n";
|
||||
}
|
||||
print "\n";
|
||||
}
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<screensaver name="maze">
|
||||
<screensaver name="maze" _label="Maze">
|
||||
|
||||
<command arg="-root"/>
|
||||
|
||||
|
@ -24,4 +24,5 @@
|
|||
<boolean _label="Put a bridge over the logo?" arg-unset=""
|
||||
id="bridge" arg-set="-bridge"/>
|
||||
|
||||
<_description>This is the ancient X maze demo, modified to work with xscreensaver. It generates a random maze, then solves it with visual feedback. Originally by Jim Randell; modified by a cast of thousands.</_description>
|
||||
</screensaver>
|
|
@ -1,7 +1,8 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<screensaver name="moebius">
|
||||
<screensaver name="moebius" _label="Moebius">
|
||||
|
||||
<command arg="-root"/>
|
||||
|
||||
<_description>Another M. C. Escher hack by Marcelo Vianna, this one draws ``Moebius Strip II,'' a GL image of ants walking along the surface of a moebius strip.</_description>
|
||||
</screensaver>
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<screensaver name="moire">
|
||||
<screensaver name="moire" _label="Moire">
|
||||
|
||||
<command arg="-root"/>
|
||||
|
||||
|
@ -19,4 +19,5 @@
|
|||
<boolean _label="Display screensaver in monochrome." arg-unset=""
|
||||
id="monochrome" test="mono" arg-set="-mono"/>
|
||||
|
||||
<_description>This one draws cool circular interference patterns. Most of the circles you see aren't explicitly rendered, but show up as a result of interactions between the other pixels that were drawn. Written by Jamie Zawinski, inspired by Java code by Michael Bayne. As he pointed out, the beauty of this one is that the heart of the display algorithm can be expressed with just a pair of loops and a handful of arithmetic, giving it a high ``display hack metric''.</_description>
|
||||
</screensaver>
|
|
@ -1,7 +1,8 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<screensaver name="moire2">
|
||||
<screensaver name="moire2" _label="Moire2">
|
||||
|
||||
<command arg="-root"/>
|
||||
|
||||
<_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 planes with various operations. The planes are moving independently of one another, causing the interference lines to ``spray.'' Written by Jamie Zawinski.</_description>
|
||||
</screensaver>
|
9
capplets/screensaver/screensavers/molecule.xml
Normal file
9
capplets/screensaver/screensavers/molecule.xml
Normal file
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<screensaver name="molecule" _label="Molecule">
|
||||
|
||||
<fullcommand arg="-root"/>
|
||||
|
||||
<_description>Draws several different representations of molecules. Some common molecules are built in, and it can also read PDB (Protein Data Base) files as input. Written by Jamie Zawinski.</_description>
|
||||
|
||||
<fake name="Molecule (lumpy)"/>
|
||||
</screensaver>
|
|
@ -1,7 +1,8 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<screensaver name="morph3d">
|
||||
<screensaver name="morph3d" _label="Morph3D">
|
||||
|
||||
<command arg="-root"/>
|
||||
|
||||
<_description>Another 3d shape-changing GL hack, by Marcelo Vianna. It has the same shiny-plastic feel as Superquadrics, as many computer-generated objects do...</_description>
|
||||
</screensaver>
|
|
@ -1,7 +1,8 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<screensaver name="mountain">
|
||||
<screensaver name="mountain" _label="Mountain">
|
||||
|
||||
<command arg="-root"/>
|
||||
|
||||
<_description>Generates random 3d plots that look vaguely mountainous. Written by Pascal Pensa.</_description>
|
||||
</screensaver>
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<screensaver name="munch">
|
||||
<screensaver name="munch" _label="Munch">
|
||||
|
||||
<command arg="-root"/>
|
||||
|
||||
|
@ -17,4 +17,12 @@
|
|||
<boolean _label="Display screensaver in monochrome." arg-unset=""
|
||||
id="monochrome" test="mono" arg-set="-mono"/>
|
||||
|
||||
<_description>
|
||||
DATAI 2
|
||||
ADDB 1,2
|
||||
ROTC 2,-22
|
||||
XOR 1,2
|
||||
JRST .-4
|
||||
|
||||
As reported by HAKMEM, in 1962, Jackson Wright wrote the above PDP-1 code. That code still lives on in this screenhack, some 35 years later. The number of lines of enclosing code has increased substantially, however. This version is by Tim Showalter.</_description>
|
||||
</screensaver>
|
9
capplets/screensaver/screensavers/nerverot.xml
Normal file
9
capplets/screensaver/screensavers/nerverot.xml
Normal file
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<screensaver name="nerverot" _label="NerveRot">
|
||||
|
||||
<fullcommand arg="-root -count 1000"/>
|
||||
|
||||
<_description>Draws different shapes composed of nervously vibrating squiggles, as if seen through a camera operated by a monkey on crack. By Dan Bornstein.</_description>
|
||||
<fake name="NerveRot (dense)"/>
|
||||
<fake name="NerveRot (thick)"/>
|
||||
</screensaver>
|
|
@ -1,7 +1,8 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<screensaver name="noseguy">
|
||||
<screensaver name="noseguy" _label="Noseguy">
|
||||
|
||||
<command arg="-root"/>
|
||||
|
||||
<_description>A little man with a big nose wanders around your screen saying things. The things which he says can come from a file, or from an external program like `zippy' or `fortune'. This was extracted from `xnlock' by Dan Heller. Colorized by Jamie Zawinski.</_description>
|
||||
</screensaver>
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<screensaver name="pedal">
|
||||
<screensaver name="pedal" _label="Pedal">
|
||||
|
||||
<command arg="-root"/>
|
||||
|
||||
|
@ -20,4 +20,5 @@
|
|||
<boolean _label="Display screensaver in monochrome." arg-unset=""
|
||||
id="monochrome" test="mono" arg-set="-mono"/>
|
||||
|
||||
<_description>This is sort of a combination spirograph/string-art. It generates a large, complex polygon, and lets the X server do the bulk of the work by giving it an even/odd winding rule. Written by Dale Moore, based on some ancient PDP-11 code.</_description>
|
||||
</screensaver>
|
|
@ -1,7 +1,8 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<screensaver name="penetrate">
|
||||
<screensaver name="penetrate" _label="Penetrate">
|
||||
|
||||
<command arg="-root"/>
|
||||
|
||||
<_description>This hack simulates the classic arcade game Missile Command. Written by Adam Miller.</_description>
|
||||
</screensaver>
|
|
@ -1,7 +1,12 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<screensaver name="penrose">
|
||||
<screensaver name="penrose" _label="Penrose">
|
||||
|
||||
<command arg="-root"/>
|
||||
|
||||
<_description>Draws quasiperiodic tilings; think of the implications on modern formica technology. Written by Timo Korvola.
|
||||
|
||||
In April 1997, Sir Roger Penrose, a British math professor who has worked with Stephen Hawking on such topics as relativity, black holes, and whether time has a beginning, filed a copyright-infringement lawsuit against the Kimberly-Clark Corporation, which Penrose said copied a pattern he created (a pattern demonstrating that ``a nonrepeating pattern could exist in nature'') for its Kleenex quilted toilet paper. Penrose said he doesn't like litigation but, ``When it comes to the population of Great Britain being invited by a multinational to wipe their bottoms on what appears to be the work of a Knight of the Realm, then a last stand must be taken.''
|
||||
|
||||
As reported by News of the Weird #491, 4-jul-1997.</_description>
|
||||
</screensaver>
|
9
capplets/screensaver/screensavers/petri.xml
Normal file
9
capplets/screensaver/screensavers/petri.xml
Normal file
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<screensaver name="petri" _label="Petri">
|
||||
|
||||
<fullcommand arg="-root -size 2 -count 20"/>
|
||||
|
||||
|
||||
<_description>This simulates colonies of mold growing in a petri dish. Growing colored circles overlap and leave spiral interference in their wake. Written by Dan Bornstein.</_description>
|
||||
<fake name="Petri 2"/>
|
||||
</screensaver>
|
8
capplets/screensaver/screensavers/phosphor.xml
Normal file
8
capplets/screensaver/screensavers/phosphor.xml
Normal file
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<screensaver name="phosphor" _label="Phosphor">
|
||||
|
||||
<fullcommand arg="-root"/>
|
||||
|
||||
|
||||
<_description>Draws a simulation of an old terminal, with large pixels and long-sustain phosphor. It can run any program as a source of the text it displays. Written by Jamie Zawinski.</_description>
|
||||
</screensaver>
|
|
@ -1,7 +1,8 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<screensaver name="pipes">
|
||||
<screensaver name="pipes" _label="Pipes">
|
||||
|
||||
<command arg="-root"/>
|
||||
|
||||
<_description>If you've ever been in the same room with a Windows NT machine, you've probably seen this GL hack. This version is by Marcelo Vianna.</_description>
|
||||
</screensaver>
|
9
capplets/screensaver/screensavers/pulsar.xml
Normal file
9
capplets/screensaver/screensavers/pulsar.xml
Normal file
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
<screensaver name="pulsar" _label="Pulsar">
|
||||
|
||||
<fullcommand arg="-root"/>
|
||||
|
||||
|
||||
<_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. Written by David Konerding.</_description>
|
||||
<fake name="Pulsar (textures)"/>
|
||||
</screensaver>
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<screensaver name="pyro">
|
||||
<screensaver name="pyro" _label="Pyro">
|
||||
|
||||
<command arg="-root"/>
|
||||
|
||||
|
@ -16,4 +16,5 @@
|
|||
type="slider" default="20" arg="-scatter %" low="10"
|
||||
_high-label="More" high="100"/>
|
||||
|
||||
<_description>Pyro draws exploding fireworks. Blah blah blah. Written by Jamie Zawinski.</_description>
|
||||
</screensaver>
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1"?>
|
||||
|
||||
<screensaver name="qix">
|
||||
<screensaver name="qix" _label="Qix (solid)">
|
||||
<command arg="-root"/>
|
||||
<hgroup>
|
||||
<select id="shape">
|
||||
|
@ -43,4 +43,8 @@
|
|||
<number id="shift" _label="Color contrast"
|
||||
_low-label="Low" _high-label="High"
|
||||
type="slider" low="0" high="25" default="3" arg="-color-shift %"/>
|
||||
<_description>This is the swiss army chainsaw of qix programs. It bounces a series of line segments around the screen, and uses variations on this basic motion pattern to produce all sorts of different presentations: line segments, filled polygons, overlapping translucent areas... Written by Jamie Zawinski.</_description>
|
||||
<fake name="Qix (transparent)"/>
|
||||
<fake name="Qix (linear)"/>
|
||||
<fake name="Qix (xor)"/>
|
||||
</screensaver>
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue