On Sun, 16 Jan 2000, =?iso-8859-1?Q?Emilio_Hern=E1ndez_Mart=EDn?= wrote:
> Hola.
>
> Muchas gracias a todos por las múltiples respuestas sobre el tema de
> colocar una imagen como fondo del escritorio.
>
> Lo que me gustaría saber es cómo (o dónde, para ser más exacto) se
> pueden poner esas sentencias para que se ejecuten al entrar en linux (con
> XDM) y ya aparezca el escritorio con la imagen escogida y no haya que
> ponerla "manualmente" cada vez. He mirado varios archivos como 'xdm-config',
> 'xdm.options, 'Xstartup', 'Xsetup', etc. así como la ayuda de XDM pero las
> pruebas que he hecho no me han llevado a nada.
>
> Gracias de nuevo.
Bueno yo me he preparado un programita para que cada vez que entro en el
escritorio aparezca un fondo distinto aleatoriamente. Tengo todos los
fondos en un directorio y las xwindows las arranco con 'x' en lugar de
'startx'. ('x' es un alias).
Es decir en mi ~/.alias tengo
x='ln_rand /usr/local/dat/fondosX '*.xpm' /usr/local/dat/fondosX/fondo.xpm ;
startx -- :0 -bpp 16'
El programita 'ln_rand' está escrito en C y puede servir para fondos
aleatorios, frases aleatorias, y etceteras aleatorios. Guardamos en un
directorio una serie de ficheros de lo que queramos y establecemos el
nombre de un link simbólico que cada vez apuntará a un fichero distinto.
Mando una copia a GUN-C porque en esa lista no tienen problema de excesivo
tráfico y al ser un programa C GPL quizas a alguien le sirva para alguna cosa.
El programa es una chorradita pero quizas alguien le encuentre alguna
utilidad. Si es así ya estoy recompensado.
8<- - - - - - - - - - - -
//
/* Autor: Antonio Castro Snurmacher <[EMAIL PROTECTED]> */
/* (C) 20-Ene-2000 Ciberdroide Informática (http://www.ciberdroide.com) */
//
/***
PROPOSITO:
Hace un find sobre el directorio (arg1) indicado usando una
máscara (arg2) para el nombre de los ficheros y descartando
los links. Apartir de los nombres indicados tomará uno al
hazar y creará en ese directorio (arg1) un link simbólico
con nombre (arg3) a dicho fichero.
LICENCIA:
Este programa es software libre. Puede redistribuirlo
y/o modificarlo bajo los términos de la Licencia Pública
General de GNU según es publicada por la Free Software
Foundation, bien de la versión 2 de dicha Licencia o bien
(según su elección) de cualquier versión posterior.
Este programa se distribuye con la esperanza de que sea
útil, pero SIN NINGÚN TIPO DE GARANTIA, incluso sin la
garantía MERCANTIL implícita o sin garantizar la CONVENIENCIA
PARA UN PROPOSITO PARTICULAR. Vease la Licencia Pública
General de GNU para más detalles.
Debería haber recibido una copia de la Licencia Pública General
junto con este programa. Si no ha sido así, escriba a la
Free Software Foundation, Inc., en 59 Temple Place - Suite 330,
Boston, MA 02111-1307, EEUU.
/
#include
#include
#include
#define MAXTAB 1024
#define MAXNAME 500
char line[MAXNAME];
char *Tab[MAXTAB];
int n, j;
char *pt;
time_t t;
int s;
int i;
FILE *fp;
char command[200];
/*/
void Uso(){
fprintf(stderr,"\nUse: ln_rand \n");
fprintf(stderr,"samples:\n");
fprintf(stderr,"ln_rand /home/acastro/fondosX/ '*.xpm' 'fondo.xpm'\n");
fprintf(stderr,"ln_rand /home/acastro/frases/ '*.txt' 'frase.txt'\n");
exit(-1);
}
/**/
/**/
void main(int argc, char **argv){
time(&t);
s=mktime(localtime(&t));
srand(s);
n=0;
if(argc!=4){
Uso();
}
sprintf(command,"find %s ! -type l -name '%s' ",
argv[1], argv[2]);
if ( ( fp=popen (command, "r")) == NULL)
perror("Error en popen");
while ( (fgets(line, sizeof(line), fp)) != NULL) {
pt= malloc(strlen(line+1));
if (pt==NULL){
perror("malloc error");
exit(-1);
}
else{
if(line[strlen(line)-1]=='\n'){
line[strlen(line)-1]='\0';
}
strcpy(pt, line);
Tab[n]=pt;
n++;
}
}
pclose(fp);
Tab[n]=NULL;
j=(((float)n)*rand()/(RAND_MAX+1.0));
sprintf(command, "ln -s -f %s %s", Tab[j], argv[3]);
fprintf(st