Re: Imagen tapiz (último)

2000-01-23 Por tema Antonio Castro
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

Re: Imagen tapiz (último)

2000-01-18 Por tema Marcelo Ramos
On Sun, Jan 16, 2000 at 07:35:28PM +0100, Emilio Hernández Martín wrote:
 
> 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.
> 

Veamos:

En la página de manual del xdm dice:

Después que el usuario se logea, xdm ejecuta el script 
``/etc/X11/xdm/Xstartup'' como root. Entonces xdm ejecuta
el script ``/etc/X11/Xsession'' como el usuario. Este 
fichero de sesión puede lanzar programas adicionales y
típicamente ejecuta el script .xsession en el directorio 
home del usuario.

Entonces me fijo en script /etc/X11/Xsession y allí tengo:

--

optionfile=/etc/X11/Xsession.options

.
.
.

startup=$HOME/.xsession

.
.
.
  

if [ -e $startup ] && grep -qs ^allow-user-xsession $optionfile; then
  if [ -x $startup ]; then
realstartup=$startup
  else
realstartup="sh $startup"
  fi
elif [ -e /etc/X11/window-managers ]; then
  for i in `sed 's/#.*//' /etc/X11/window-managers`; do
if [ -x $i ]; then
  realstartup=$i
  break
fi
  done
fi


.
.
.

Esto dice que si existe el archivo $startup (que está definido 
arriba como $HOME/.xsession) y existe la palabra ``allow-user-xsession''
en el fichero $optionfile (que está definido arriba como 
/etc/X11/Xsession.options) entonces ejecuta el fichero $startup (que es 
$HOME/.xsession). Sino lanza el primer manejador de ventanas (window manager)
nombrado en el fichero /etc/X11/window-managers .

--

Lo que hacemos entonces es : 

1) Verificar que tenemos en el fichero /etc/X11/Xsession.options la palabra 
   allow-user-xsession, sino está la ponemos en una nueva línea.

2) Poner en el fichero $HOME/.xsession el comando que te pone el tapiz y 
   el manejador de ventanas. Por ejemplo, mi .xsession :

   xsetroot -solid darkcyan
   icewm


Bueno esto tendría que funcionar 


Probá y contanos si funciona.

Saludos, Marcelo.

   
 

-- 
__

__  _
Marcelo Ramos  |  \/   __|
Debian 2.1 (Slink) |  |_//
Linux registered user #118109  |\
[EMAIL PROTECTED]|_|\/|_|\_\

__


Imagen tapiz (último)

2000-01-16 Por tema Emilio Hernández Martín

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.