# [portage] xLightFrame para monitores Philips (nuevo ebuild)

## pcmaster

Pues eso, este es el script para instalar xLightFrame en Gentoo. Os recuerdo que solamente funciona con monitores Philips, ya que es una combinación de hardware y software.

```

# Copyright 1999-2005 Gentoo Foundation

# Distributed under the terms of the GNU General Public License v2

# $Header: $

inherit flag-o-matic

DESCRIPTION="Philips LightFrame2 for X"

HOMEPAGE="http://xlightframe.sourceforge.net"

SRC_URI="mirror://sourceforge/xlightframe/xLightFrame.${PV}.tar.gz"

LICENSE="GPL-2"

SLOT="0"

KEYWORDS="~x86"

IUSE=""

DEPEND="virtual/x11"

RDEPEND="virtual/x11 sys-apps/gawk x11-apps/xwininfo"

S="${WORKDIR}/xLightFrame.${PV}"

src_compile() {

    # Configure is broken and doesn't add proper ldflags, add them here.

    append-ldflags -L/usr/lib/ -lX11 -lXext -lXpm

    econf || die "could not configure"

    emake || die "emake failed"

}

src_install() {

    make DESTDIR=${D} install || die "install failed"

    dobin src/lfw.sh || die "could not copy lfw.sh"

    dosed "s:/usr/local:/usr:g" /usr/bin/lfw.sh || die "could not modify xlightframe path in lfw.sh"

    dodoc NEWS README TODO AUTHORS COPYING INSTALL

}

```

He creado un bug (#107198) y he subido el ebuild, a ver si pronto está en el portage.

--- EDITADO---

Actualizado ebuild a la última versión

----------

## DDrDark

me pica la curiosidad, que es esto del lightframe?

----------

## Stolz

 *DDrDark wrote:*   

> me pica la curiosidad, que es esto del lightframe?

 

Del primer resultado de www.google.com al buscar "lightframe":

http://www.prdomain.com/companies/p/philips/news_releases/pr_20011030_lightframe.htm

 *Quote:*   

> LightFrame is a combination of monitor hardware and PC-based software that seamlessly work in tandem to boost the brightness and sharpness of a monitor's video signal where - and only where - a user wants stepped up performance for viewing movies or photos.

 

Por cierto pcmaster, uniendome a la curiosidad de DDrDark ¿funciona? ¿Se aprecia mejoria? ¿acierta siempre?

Saludozzzzzz

----------

## navegante

 *pcmaster wrote:*   

> 
> 
> ```
> DESCRIPTION="Philips LightFrame2 for X"
> 
> ...

 

Más rápido que google.

 *Stolz wrote:*   

> 
> 
> Por cierto pcmaster, uniendome a la curiosidad de DDrDark ¿funciona? ¿Se aprecia mejoria? ¿acierta siempre?
> 
> Saludozzzzzz

 

En esa página hay un demo, aunque al parecer solo funciona con konqueror. Saludos.

----------

## pcmaster

¿Cómo si acierta?

No es automático, lo has de poner tú. Por ejemplo:

$ lightframe 1 1 500 200 

aumenta el brillo de un área rectangular en la esquina superior izquierda

$ lightframe -f 

lo aplica a toda la pantalla

$ lightframe -c

lo desactiva

Ahora lo bueno sería encontrar (o hacer) un programita que te permitiera seleccionar un área con el ratón (como la utilidad de Philips para Windows) y llamase a xlightframe para aplicarlo. O añadir soporte en algunos programas, como xine, xawdecode, etc, para que lo utilizaran. O ambas cosas  :Smile:   :Smile: 

Parece que hay algo al respecto en la página de xLightFrame, pero de momento solo en el CVS.

Por cierto, cuando usaba Windows acabé desinstalando la utilidad de Philips para controlar el lightframe con el ratón, creaba tantos problemas que no iba bien ni el juego de cartas de Windows.  :Very Happy:   :Very Happy:   :Very Happy: 

Eso sí, si lo que quieres es usarlo a pantalla completa, lo puedes activar desde el menu del monitor (es lo que hacía yo hasta ahora), pero no puedes indicar un área. Eso sólo puedes hacerlo por software.

----------

## Stolz

Pues si lo tienes que definir tu me parece un engorro. Por la descripción habia entendido que cuando el usuario dice que es una foto, aplicaba unos ajustes de video prefedinidos para que la zona en la que está la foto se vea mejor, cuando es un video, mas de lo mismo, etc.... es decir, pensaba que los ajustes ya venian hechos y que la zona donde se aplican se calculaba automaticamente.

 *pcmaster wrote:*   

> Por cierto, cuando usaba Windows acabé desinstalando la utilidad de Philips para controlar el lightframe con el ratón, creaba tantos problemas que no iba bien ni en juego de cartas de Windows.   

  Esto me suena y tambien me hace gracia. Cuando usaba windows tuve que dejar de utilizar el mando de la capturadora y los drivers Logitech, porque daban muchos fallos. En Linux, con soporte no oficial, van de vicio y los uso a diario desde hace años sin ningun porblema. Lo mismo con el scanner. Y ahora, el Cool&Quite de los AMD64 me funciona bien en Linux y en cambio en Windows me cuelga el ordenador constantemente. Es lamentable que algo oficialmente soportado en Windows funcione mejor en Linux.

Saludozzzzzzz

----------

## DDrDark

Osea, basicamente aumenta el brillo en un area que le especifiques para mejorar la imagen... pero a monitores de CTR?, porq un monitor TFT con DVI no creo q necesite de eso teniendo en cuenta q la señal va limpia y los blancos son mas blancos y los negros son mas negros que con la VGA

----------

## pcmaster

Sí, funciona con monitores CRT fabricados por Philips que incoirporen la tecnología LightFrame2 (como mi Philips 107T). Los TFT ya brillan al máximo.

Cuando activas el lightframe a parte de la pantalla (o a toda) la zona aumenta su brillo hasta parecer un TV.

Si en ese área hay texto, se ven líneas horizontales (¿te has fijado cuando ves una peli en la TV, que al final, cuando sale el repato en letras blancas sobre fondo negro, las letras muestran como una especie de "sombra blanca"?) pero si lo que hay en pantalla es una foto o una peli, pues se ve mucho mejor.

El software de Philips para Windows sí que era "automatico" y buscaba donde había fotos en la pantalla, pero su funcionamiento dejaba mucho que desear. Además, creo recordar que solamente puede establecerse una zona brillante en la pantalla.

De todas formas, es ideal para combinarlo con programas como Xine o xawtv, que muestran video en modimiento, o para jugar al Quake 3  :Smile: 

----------

## DDrDark

Y no seria lo mismo q subir el brillo por el monitor? solo q afectaria a toda la pantalla

----------

## pcmaster

No es exactamente lo mismo. Aunque pongas los controles de brillo y contraste al máximo, Lightframe aumenta el brillo todavía más. LightFrame hace que la pantalla brille como si fuera un TV.

----------

## DDrDark

Cosa rara, si por hardware es realmente capaz, porque tener q utilizar un software para lograrlo? estos de philips .. xD

----------

## pcmaster

Lightframe puede controlarse desde el menú OSD del monitor. Pero entonces solamente puedes ponerlo a pantalla completa o quitarlo.

El programa (que Philips solamente ha sacado para Windows) sirve para que, además de activarlo en toda la pantalla y desactivarlo, puedas activarlo solamente en un área. El programa diganos que es el "mando" para pasarle información al monitor (qué parte de la pantalla activar), cuyo hardware hace el resto.

----------

## pcmaster

Hola de nuevo,

Echándole un vistazo al código fuente del programa, veo que hay un script para seleccionar una ventana y se active automáticamente en dicha ventana el LightFrame.

Sin embargo hay que modificarlo un poco, ya que el script supone que se instala en /usr/local/bin y Gentoo lo instala en /usr/bin. Además, el make install no lo instala.

----------

## pcmaster

He hecho un nuevo ebuild que instala correctamente el script lhw.sh. Este script sirve para realzar una determinada ventana seleccionándola con el ratón. Yo me he creado en el menú de XFCE$ dos entradas. Una de ellas ejecuta lhw.sh, cuando la ejecutas, seleccionas una ventana y se activa en dicha ventana el LightFrame. la otra entrada ejecuta un xlightframe -c para desactivar LightFrame.

El nuevo ebuild ha quedado así:

```
# Copyright 1999-2005 Gentoo Foundation

# Distributed under the terms of the GNU General Public License v2

# $Header: $

DESCRIPTION="Philips LightFrame2 for X"

HOMEPAGE="http://xlightframe.sourceforge.net"

SRC_URI="mirror://sourceforge/xlightframe/xLightFrame.${PV}.tar.gz"

LICENSE="GPL-2"

SLOT="0"

KEYWORDS="~x86"

IUSE=""

DEPEND="sys-devel/gcc

      sys-apps/sed

      sys-devel/libtool

      virtual/x11"

RDEPEND="virtual/x11

       sys-apps/gawk"

S="${WORKDIR}/xLightFrame.${PV}"

inherit flag-o-matic

src_compile() {

   append-ldflags -L/usr/lib/ -lX11 -lXext -lXpm

   econf || die "could not configure"

   emake || die "emake failed"

}

src_install() {

   einstall || die "einstall failed"

   mv src/lfw.sh src/lfw.sh.old

   cat src/lfw.sh.old|sed s/"\/local\/"/"\/"/g >src/lfw.sh

   rm src/lfw.sh.old   

   dobin src/lfw.sh|| die "could not copy lfw.sh"

}
```

En cuanto a las dependencias, gawk lo necesita el script lfw.sh a la hora de ejecutarse, no el programa xlightframe, x11 supongo que será necesario siempre: a la hora de ejecutar, es necesario, para compilar supongo quie también, pero no estoy seguro (el programa tiene en su código en C una línea:

#include <X11/Xlib.h> /* Every Xlib program must include this */

Puesto que para funcionar necesita xlib y para funcionar necesita las X, he puesto virtual/x11 en ambas dependencias y con eso debe ser suficiente. gcc está claro que se necesita para compilar un programa C, (¿quizá no haga falta indicar esta dependencia porque se supone?) y sed hace falta en la instalación para poder modificar el script lfw.ah. En cuanto a libtool, no estoy seguro de cuándo hace falta, dad al descripción de libtool en la página de paquetes de Gentoo: "A shared library tool for developers" supongo que sólo hace falta al compilar.

No sé si poner órdenes de bash en un ebuild será correcto o no. Al menos funciona. 

Es el primer programa para el que hago el ebuild desde cero (había hecho uno modificando un ebuild existente, poca cosa). ¿Sabéis de algún HOWTO en castellano que explique cómo hacer los ebuilds bien? Cualquier comentario sobre el nuevo ebuild será bienvenido.

Gracias

----------

## pcmaster

Enviado nuevo ebuild a bugzilla.

----------

## DDrDark

Te lo has currado, aunque a mi no me sea de utilidad a otros muchos le será, asi que gracias  :Wink: 

----------

## pcmaster

Gracias a SpOeK, que me ayudo al principio (era otro hilo).

Lo creia tener acabado y le he hecho las modificaciones que he comentado por lo del script.

Había creado un bug y subido el ebuild y ahora lo he tenido que enviar de nuevo (modificandolo).

Ahora sí que ya lo doy por acabado (si no sale nada más).

A ver si lo ponen en el portage pronto  :Smile: 

----------

## pcmaster

Una curiosidad:

En el CD que venia con el monitor (el CD es del año 2001) en el archivo multi_manual/spanish/107t/product/product.htm hay una serie de FAQ. En una de ellas, Philips justifica no haber realizado una versión para Linux:

```
P: ¿Puedo usar LightFrame en un ordenador cuyo sistema operativo sea Unix, Linux o de otro tipo?

R: De momento no existe software de aplicación para Unix o Linux. Unix se usa mayoritariamente en aplicaciones profesionales muy especializadas. Como sus usuarios rara vez visualizan fotografías o vídeo, nuestros productos avanzados de pantalla amplia no son compatibles con LightFrame.
```

Desde luego, con semejante "visión" por parte de los desarrolladores de Philips, no me extraña que hace tiempo hayan dejado de fabricar ordenadores PC... aunque quizá sea mejor así, porque si Philips hubiese sacado una aplicación propietaria, seguramente sería propietaria, de código cerrado, y no tendríamos el código fuente disponible. Y posiblemente no existiría xlightrame, si su autor utilizara la aplicación de Philips y no lo hubiera desarrollado.

----------

## pcmaster

He modificado el ebuild usando dosed en lugar de rm, sed, mv, cat, etc.

El ebuild definitivo (espero) es este:

```
# Copyright 1999-2005 Gentoo Foundation

# Distributed under the terms of the GNU General Public License v2

# $Header: $

DESCRIPTION="Philips LightFrame2 for X"

HOMEPAGE="http://xlightframe.sourceforge.net"

SRC_URI="mirror://sourceforge/xlightframe/xLightFrame.${PV}.tar.gz"

LICENSE="GPL-2"

SLOT="0"

KEYWORDS="~x86"

IUSE=""

DEPEND="sys-devel/gcc

      sys-devel/libtool

      virtual/x11"

RDEPEND="virtual/x11

       sys-apps/gawk"

S="${WORKDIR}/xLightFrame.${PV}"

inherit flag-o-matic

src_compile() {

   append-ldflags -L/usr/lib/ -lX11 -lXext -lXpm

   econf || die "could not configure"

   emake || die "emake failed"

}

src_install() {

   einstall || die "einstall failed"

   dobin src/lfw.sh || die "could not copy lfw.sh"

   dosed "s:/usr/local:/usr:g" /usr/bin/lfw.sh || die "could not modify xlightframe path in lfw.sh"

}
```

Al final de tanto subir modificaciones al bugzilla van a pensar que soy un chapuzas... antes de subir este ebuild esperaré un poco, a ver si no hay más cambios.

----------

## Ferdy

libtool y gcc no deberían estar en los DEPEND.

Si se puede evitar usar einstall se debe evitar.

El inherit debería ir antes de cualquier variable / funcion

Saludos.Ferdy

----------

## pcmaster

Hola Ferdy,

Grcais por tu respuesta.

En el man 5 ebuild leí:

```
einstall [make options]

    This is used as a replacement for make install.  Performs:

          make \

                   prefix=${D}/usr \

                   datadir=${D}/usr/share \

                   infodir=${D}/usr/share/info \

                   localstatedir=${D}/var/lib \

                   mandir=${D}/usr/share/man \

                   sysconfdir=${D}/etc \

                   ${EXTRA_EINSTALL} \

                   make options \

                   install

              Please  do not use this in place of 'make install DESTDIR=${D}'.

              That is the preferred way  of  installing  make-based  packages.

              Also, do not utilize the EXTRA_EINSTALL variable since it is for

              users.

```

donde me pareció entender que no se use einstall si pones make install DESTDIR=${D} pero en este caso la orden sería make install sin nada más. Si no se recomienda poner einstall ¿como se debería poner, make install DESTDIR=${D}? ¿o simplemente un dobin para cada archivo a instalar?

¿Sería correcto esto:?

```
src_install() {

   into /usr

   dobin src/xlightframe || die "could not copy xlightframe"

   dobin src/lfw.sh || die "could not copy lfw.sh"

   dosed "s:/usr/local:/usr:g" /usr/bin/lfw.sh || die "could not modify xlightframe path in lfw.sh"

   dodoc NEWS README TODO AUTHORS COPYING INSTALL

}
```

al menos funciona

¿Sabes de algún manual en castellano que explique cómo hacer ebuilds?

----------

## Ferdy

Deberías usar algo como:

```
make DESTDIR=${D} install || die "install failed"
```

 *Quote:*   

> ¿Sabes de algún manual en castellano que explique cómo hacer ebuilds?

 

No

Saludos.Ferdy

----------

## pcmaster

El ebuild ha quedado, finalmente, así:

```
# Copyright 1999-2005 Gentoo Foundation

# Distributed under the terms of the GNU General Public License v2

# $Header: $

inherit flag-o-matic

DESCRIPTION="Philips LightFrame2 for X"

HOMEPAGE="http://xlightframe.sourceforge.net"

SRC_URI="mirror://sourceforge/xlightframe/xLightFrame.${PV}.tar.gz"

LICENSE="GPL-2"

SLOT="0"

KEYWORDS="~x86"

IUSE=""

DEPEND="virtual/x11"

RDEPEND="virtual/x11 sys-apps/gawk"

S="${WORKDIR}/xLightFrame.${PV}"

src_compile() {

   append-ldflags -L/usr/lib/ -lX11 -lXext -lXpm

   econf || die "could not configure"

   emake || die "emake failed"

}

src_install() {

   make DESTDIR=${D} install || die "install failed"

   into /usr

   dobin src/lfw.sh || die "could not copy lfw.sh"

   dosed "s:/usr/local:/usr:g" /usr/bin/lfw.sh || die "could not modify xlightframe path in lfw.sh"

   dodoc NEWS README TODO AUTHORS COPYING INSTALL

}
```

--- Editado ---

Nos hemos cruzado los mensajes, estoy probando lo que me has dicho.

Gracias.

--- Editado de nuevo ---

OK

----------

## Ferdy

'into' no sirve de nada

El append-ldflags debería sobrar, supongo que el configure debería hacer todo esto él solo.

Saludos.Ferdy

----------

## pcmaster

Quitaré el into.

En cuanto al ldflags, sí hace falta, ya que si compilo por libre (sin usar ebuild)

./configure

make

make install

falla la compilación. Tras poner los ldflags funciona OK, mira:

http://sourceforge.net/forum/forum.php?forum_id=382328

por lo visto el ./configure no lo hace, ya que basta poner un # en la línea que pone append-ldflags -L/usr/lib/ -lX11 -lXext -lXpm para que de un error al hacer el emerge:

```

...

...

...

xlightframe.o(.text+0x6d9): In function `init':

: undefined reference to `XSelectInput'

xlightframe.o(.text+0x6ef): In function `init':

: undefined reference to `XMapWindow'

xlightframe.o(.text+0x715): In function `init':

: undefined reference to `XCreateGC'

xlightframe.o(.text+0x88f): In function `main':

: undefined reference to `XNextEvent'

collect2: ld returned 1 exit status

make[2]: *** [xlightframe] Error 1

make[2]: Leaving directory `/var/tmp/portage/xlightframe-0.1/work/xLightFrame.0.1/src'

make[1]: *** [all-recursive] Error 1

make[1]: Leaving directory `/var/tmp/portage/xlightframe-0.1/work/xLightFrame.0.1'

make: *** [all] Error 2

!!! ERROR: media-gfx/xlightframe-0.1 failed.

!!! Function src_compile, Line 23, Exitcode 2

!!! emake failed

!!! If you need support, post the topmost build error, NOT this status message.
```

Si dejo la línea tal cual, el emerge funciona:

```

...

...

...

>>> Merging media-gfx/xlightframe-0.1 to /

--- /usr/

--- /usr/bin/

>>> /usr/bin/xlightframe

>>> /usr/bin/lfw.sh

--- /usr/share/

--- /usr/share/doc/

>>> /usr/share/doc/xlightframe-0.1/

>>> /usr/share/doc/xlightframe-0.1/README.gz

>>> /usr/share/doc/xlightframe-0.1/TODO.gz

>>> /usr/share/doc/xlightframe-0.1/NEWS.gz

>>> /usr/share/doc/xlightframe-0.1/INSTALL.gz

>>> /usr/share/doc/xlightframe-0.1/COPYING.gz

>>> /usr/share/doc/xlightframe-0.1/AUTHORS.gz

>>> Regenerating /etc/ld.so.cache...

>>> media-gfx/xlightframe-0.1 merged.

>>> Recording media-gfx/xlightframe in "world" favorites file...

>>> clean: No packages selected for removal.

>>> Auto-cleaning packages ...

>>> No outdated packages were found on your system.

 * Regenerating GNU info directory index...

 * Processed 154 info files.
```

Y sí, quitando el into funciona igual.

----------

## Ferdy

Entonces añade un comentario diciendo algo así como: 'configure is broken and doesn't add proper ldflags, add them here'.

Saludos.Ferdy

----------

## pcmaster

Hola de nuevo,

Por la lista de correo de Gentoo he recibido un mensajillo muy interesante, que explica cómo hacer ebuilds: 

http://hierroycuero.org/ebuild/

me lo estoy estudiando, a ver si mejoro el ebuild.

Saludos.

----------

## pcmaster

Había perdido hace tiempo este hilo  :Wink: 

Hace unos 3 meses añadí una dependencia en el ebuild (x11-apps/xwininfo) ya que es necesaria para el script lfw.sh, que permite resaltar una ventana. me di cuenta tras cambiar a Xorg modular y ver que no funciionaba el script porque le faltaba dicho paquete.

El ebuild quedó, finalmente, así:

```

# Copyright 1999-2005 Gentoo Foundation

# Distributed under the terms of the GNU General Public License v2

# $Header: $

inherit flag-o-matic

DESCRIPTION="Philips LightFrame2 for X"

HOMEPAGE="http://xlightframe.sourceforge.net"

SRC_URI="mirror://sourceforge/xlightframe/xLightFrame.${PV}.tar.gz"

LICENSE="GPL-2"

SLOT="0"

KEYWORDS="~x86"

IUSE=""

DEPEND="virtual/x11"

RDEPEND="virtual/x11 sys-apps/gawk x11-apps/xwininfo"

S="${WORKDIR}/xLightFrame.${PV}"

src_compile() {

    # Configure is broken and doesn't add proper ldflags, add them here. 

    append-ldflags -L/usr/lib/ -lX11 -lXext -lXpm

    econf || die "could not configure"

    emake || die "emake failed"

}

src_install() {

    make DESTDIR=${D} install || die "install failed"

    dobin src/lfw.sh || die "could not copy lfw.sh"

    dosed "s:/usr/local:/usr:g" /usr/bin/lfw.sh || die "could not modify xlightframe path in lfw.sh"

    dodoc NEWS README TODO AUTHORS COPYING INSTALL

}

```

El programa funciona perfectamente, incluso mejor que el software original de Philips para Windows (que tenía "efectos secundarios"). El único bug que tiene, y que me afecta es que si una ventana "se sale" por el borde izquierdo de la pantalla (y por tanto la coordenada x de su borde izquierdo es negativa) el programa no hace nada. Esto está corregido en la versión CVS.

En XFCE4 me he creado 3 entradas de menú,

"XLightFrame en pantalla completa" que ejecuta xlightframe -f

"XLightFrame en ventana" que ejecuta la orden lfw.sh

"Desactivar XLightFrame", que ejecuta la orden xlightframe -c

Saludos.

----------

