Spritesheets con inkscape mediante layers

Cómo extrañaba programar!!! y cómo extrañaba usar linux!!!!! y ahora que tengo linux y quiero acelarar mi proceso de producción de spritesheets, encuentro la escusa perfecta para programar y usar linux XD

Este pequeño script genera un spritesheet a partir de un archivo svg que tenga los sprites tirados por todas partes en capas!

demo.png

#!/bin/bash

filename="$(echo "$1" | awk -F. '{print $1}')"
h="+"

# ¯\_(ツ)_/¯
if [[ $* == *-v* ]]
then
  h="-"
fi

# readibility counts -python zen
layerList="$(inkscape --query-all $1 | grep layer | awk -F, '{print $1}')"

echo "$layerList" |
  awk -v file="$filename" -v h="$h" '
    {system("inkscape " file ".svg -i " $1 " -j -C --export-png /tmp/" file "-" $1 ".png")} 

    END{system("convert " h "append /tmp/" file "-*.png " file ".png")}

    END{system("rm /tmp/" file "-*.png")}'

Primero, consigue el id de los layers de inkscape,  y los pone en una lista. Itera sobre esta lista, para generar imágenes temporales de cada una de las capas, y luego, usando imagemagick, las concatena, horizontal o verticalmente.

Hice un repo donde voy a ir colando scripts de bash para game development… tal vez lo abandone igual que el resto de mis proyectos lol XD pero… tal vez no o__O igual, si alguien quiere descargar el código, pueden clonarlo desde aquí: https://github.com/VengadoraVG/bash-for-gamedevs

Ejecutando comandos con parámetros en bash

Cuando hice el script para arreglar un libro escaneado a doble cara, me topé con varios problemas, porque no entendía cómo un script recibe parámetros desde bash! así que decidí  escribir esta entrada, explicando lo que aprendí.

Primero, este script, nos servirá para ver qué es lo que está pasando cuando le pasamos parámetros (o argumentos) a un comando en bash.

En este script, le paso parámetros al script de arriba. Les recomiendo descarguen ambos archivos, y los ejecuten, para ver en tiempo real lo que pasa :O (ambos archivos deben estar en la misma carpeta, duh!)

Resumiendo, para ejecutar un comando, asegúrate de no usar cadenas de texto, lo mejor, es escribirlo justo como lo escribirías en la consola.

Para pasar argumentos a dicho comando, asegúrate de que no estén en una cadena de texto, todas juntitas, porque si no, bash las interpretará como un elemento de los argumentos, en vez de una lista de argumentos ^w^

Lenovo z50-75 y Debian!!

He buscado por todo internet, y hay muy poco sobre la instalación de debian en una Lenovo z50-75, así que decidí dejar en este blog mis experiencias n.n

Primero hay que desactivar el UEFI, y darle prioridad de boot al cd-rom. Esto se hace desde el BIOS, hay que resetear la máquina, y presionar Fn-F2 como desquiciado! también deberías aprovechar para devolver el comportamiento de las teclas F* a la normalidad, para que no tengas que presionar Fn cada vez que necesites presionarlas. En algún lugar del BIOS dice algo sobre “hotkey”… devuélvelo a “legacy”.

Luego, instalas Debian :3

Todo salió de maravilla! lo único que falló fue el driver de la tarjeta de video… una Radeon R6 Graphics (puedes ver esta información con lspci | grep VGA), resulta que necesitas un driver privativo :(… si no quieres instalarlo, puedes seguir sin el driver, la resolución se ve, de hecho, bastante bien, pero no te funcionarán las teclas para subir y bajar el brillo. Y de hecho, no sé si el xrandr vaya a funcionarte si no lo instalas.

Hay varias instrucciones por internet, probé muchas de ellas, pero no funcionaron. En la página de AMD no aparece la R6, y si lo instalas desde los repositorios, igual todo sale mal. :(

Así que encontré este driver que sí soporta al Radeon R6 Graphics: http://www.techspot.com/downloads/drivers/essentials/amd-catalyst-linux/ una vez descargado, lo descomprimes, le das permisos de ejecución, y lo ejecutas como root. Te va a pedir varias dependencias. Si alguna falla, prueba usar “apt-get install linux-headers-$(uname-r)” y “apt-get install make”, y vuelve a intentarlo… yo sé que los requisitos dicen explícitamente que la versión del kernel debe ser 3.7, pero yo tengo una versión 3.16, y funcionó bien! (para ver la versión de tu kernel, escribe uname -r).

No fuerces la instalación!!! podrías romperlo, y ya no va a entrar al entorno gráfico, va a bootear desde un TTY… esto me pasó mientras intentaba instalar otro driver que resultó no ser compatible con mi tarjeta de video… lo solucioné con “aticonfig –uninstall”… no sé si arregle las cosas para *este* driver.

Fuera de eso, todo parece funcionar bien: el bluetooth, el wifi, el LAN y el audio ^__^

por qué aún hay software privativo?

por algún motivo trágico y oscuro me vi en la situación de usar windows 8 durante 2 días, y en este blog comparto cómo se sintió >_<

\begin{TL;DR}

Windows es horrible: está lleno de bugs, quieren meterte sus apps, su tienda, y sus spywares por la garganta, y obligarte a comprar hasta lo más fundamental. En un ambiente tan hostil, cualquiera crecería con el ideal de vender hasta un “hola mundo”. Es como un país capitalista-liberal en el que todos buscan su propio beneficio.

GNU/Linux, por otra parte, es lindo: aunque tiene comportamientos inesperados, y es un tanto más difícil de usar, todos compartimos bastante desinteresadamente lo que hacemos. Es como una familia (hippy) poco-protectora en la que todos comparten e intentan ayudarse.

\end{TL;DR}

La pantalla estaba llena de cuadritos, creo que le llaman “mosaico”, a mí me parece más un celular gigante. Como niño con computadora desconocida, lo primero que quise hacer fue probar los juegos! busqué entre los mosaicos, y allí estaba: “games” :D

un click aquí, otro click allá, y… qué?! el juego no venía instalado: tenía que descargarlo, al menos era gratis, supongo. Con un internet paceño, tan rebelde como todos los paceños, la descarga se quedó a medias; Windows nunca lo notó, pero yo pude observar cómo el internet funcionaba rápidamente, como si no hubiera ninguna descarga.

Bueno, si no hay juegos, instalaré los míos! (piratas, por supuesto). Tenía algunos juegos que siempre quise probar guardados en un cajón, me apresuré a sacarlos y a instalarlos… claro, la instalación va a tardar unos cuantos minutos (o incluso horas).

Sin juegos que jugar, pensé: bueno, al menos puedo navegar por el internet. IE… IE?!?!?!… IE!!!! D:

Y al abrirlo, lo primero que me muestra ese pequeño bastardo son dos pestañas abiertas: una con la página principal de mdn, otra, con la página principal de la marca de la nueva computadora, con publicidad por todas partes! mi reacción? cerrar ambas pestañas mientras murmullo blasfemias. Oops, cerré la última pestaña del explorador, tengo que abrirlo de nuevo, y volver a murmurar mis blasfemias mientras cierro de nuevo las dos pestañas, procurando que esta vez quede una pestaña abierta en el navegador.

“Está bien”, me digo a mí misma… “todo está bien, después de todo, dentro de poco la formatearé y le instalaré debian :) supongo que puedo soportar un poco más el internet explorer, y mientras tanto, jugaré algunos juegos, por el momento, buscaré cómo funcionará esta compu con Linux :O”.

Hago mi primera búsqueda… bing… bing?!?!?!… bing!!!!… “este pequeño bastardo está pidiendo a gritos que lo reemplace”. Accidentalmente me equivoco y presiono la tecla “numLock” en vez de “backspace”. Salta un popup sugiriéndome que instale un nuevo software para saber cuándo num lock, scroll lock y block mayus están activadas… “es gratis!” sólamente tengo que aceptar unos términos de dudosa confianza… “fuck you!” grito, mientras presiono cancelar.

Podrida de navegar en IE, comienzo a descargar firefox. “Bueno…”, pienso, “si no puedo navegar, ni tampoco puedo jugar aún, supongo que leeré un libro”… doble click en mi libro.pdf y… “hay nuevas apps en la appstore para abrir este archivo”, mientras un popup salta: “esta es la alternativa a adobe reader que los fabricantes de tu laptop creamos para leer pdfs! somos tan requete-buenas-gentes que hasta te vamos a dar una prueba gratis de 30 días!!! :D”

Por dios!! nada aquí es gratis, y lo que es gratis, es solamente un anzuelo para que compres más y más cosas. El software de nada de esto es abierto, así que asumo que usarán mis datos como les de la gana, y encima se supone que tengo que pagarles!

oh miren! mi juego instaló, pero no funciona o_O. no da mensajes de error ni nada, el juego simplemente no reacciona al ejecutarlo, es como si nada hubiera pasado… busco en internet por qué pasa esto, resulta que ahora los mensajes de error se registran en un “log”, no quiero aprender a usar Windows! no quiero tirar mi tiempo a la basura, así que decido dejarlo e instalar otros juegos que sé que funcionaban.

De pronto, salta un error indicando que hay un problema con el disco duro, busco en internet, y resulta que tengo que actualizar el driver del BIOS. Pero antes, y solo para asegurarme, corro un escaneo de errores en el disco duro. “no hay errores” reporta el programa.

error-there-is-no-error

Hago un screenshot del error, la imagen queda en mi portapapeles, y quiero guardarla por si tengo problemas después. Abro MS Paint, y de pronto, el touchpad ya no reacciona! por suerte tenía guardado por allí un mouse USB, (porque en el salvaje mundo de windows nadie sobrevive sin un mouse), el mouse USB sí funciona, pero el touchpad sigue muerto… “tal vez lo desactivé por accidente?” presiono el botón para desbloquear el touchpad, pero sigue muerto.

“tal vez es un error de hardware T^T”… pero si hago click, el touchpad comienza a reaccionar… presiono teclas al azar, y de pronto, el touchpad vuelve a reaccionar… “maldita sea! no era el hardware… quién demonios hizo windows 8? un caracol lo haría mejor!! y no tiene ojos!!! ni dedos!!!! de hecho, tiene un cerebro muy primitivo”.

Después de invertir mucha bilis en desactivar el firewall y desinstalar el horrible mcafee que viene pre-instalado en mi compu, logro hacer funcionar starcraft y portal. Juego hasta pasada la media noche, intentando olvidarme de la horrible pesadilla que me espera al salir de mis juegos.

Es el lunes por la mañana, y no lo soporto más! entro al BIOS para desactivar el malware de windows (UEFI), e inserto el disco de debian testing para desinstalar al malware llamado windows.

Unas horas más tarde, no tengo DE, no puedo instalar un DE, tengo dependencias incompletas. Solo somos yo, EVEIL (el nombre de mi compu), y un tty con letras grandes y feas.

Me reclino en mi silla, y suspiro aliviada sonriendo de forma aterradoramente extraña… “por qué me siento tranquila?” me pregunto… después de un tiempo, me respondo “un debian inestable sin DE es mucho más tranquilizador que windows 8, supongo”.

Jhtan me pasó debian 8 ese mismo día, por la tarde, volví a formatear a éveil, y todo funcionó de maravilla (bueno, algunas cosas no lol). Lo primero que hice? apt-get install sl, sl, apt-get install emacs24, luego abrí el synaptic, instalé cientos de juegos, luego personalicé mi escritorio, descargando temas libres, mientras me reía como desquiciada, con una risa nostálgica.

Ahora entiendo por qué hay software privativo, y por qué los videojuegos están muriendo con ese nuevo modelo de negocio, probablemente hayan personas que han vivido bajo la filosofía de windows durante toda su vida, nadie les regaló nunca nada, y lo regalado venía con un precio, nadie compartió ni los instó a compartir. De hecho, para ellos debió ser muy difícil aprender, toda la información que consiguieron fue hackeada de algún lugar, o incluso comprada con dinero.

Es como un contrato: yo invertí dinero en esto, ahora quiero recuperarlo.

Yo, por mi parte, nunca pagué un centavo por el software que usé, siempre fue pirata, y después, libre… incluso los videojuegos! crecí con los videojuegos! y ahora tengo mucho para compartir… yo prefiero estar en este otro mundo, nuestro pequeño mundito, en el que todos compartimos.

if (tern && emacs) pwn();

Ya hace mucho tiempo que estoy intentando aprender javascript, soy una fanática de emacs, pero envidiaba mucho el autocomplete de la consola del explorador… y ayer, buscando por internet cómo tunnear mi emacs, me topé con Tern. Fue amor a primera vista XD

Para instalarlo, solo tienes que seguir los pasos de este link: http://ternjs.net/doc/manual.html#emacs

00documenting

No sabía que Javascript se documentaba de esa forma, o_O lo aprendí del código de phaser XD.

Tern reconoce la documentación, y te la muestra en el autocomplete. En la imagen de arriba, como el parámetro person tiene el tipo string, su autocomplete te muestra los miembros de un string.

01documentingCuando llamas a esa función, también te muestra su documentación.

02documentingy mientras escribes la función, te muestra el tipo de dato de cada parámetro de la función, en tiempo real.

03documenting

pero cuidado con los puntos! la descripción de la función debe terminar con un punto. De lo contrario, tern te mostrará toooodo el texto que escribiste.

04documenting

Además, tern también reconoce objetos que hayas creado recién!! solo tienes que especificar en la documentación el prototipo de ese parámetro.

005tern-project

y esto es lo que más me gustó de tern: en el archivo .tern-project puedes decirle a tern cuáles archivos están participando en el proyecto en el que estás trabajando, entre otras cosas.  En la imagen de arriba, yo le dije a tern que cargara cualquier .js que pusiera en esa carpeta. Como phaser.min.js está allí, se va a agregar al auto-complete de tern.

y cuando creo un nuevo “game” (que es de un tipo de dato definido en phaser.min.js), al darle punto, el auto-complete me sugiere los miembros de game (que están definidos en phaser.min.js).

Tern tiene muchas otras características, como renombrar variables, funciona en muchos lugares (emacs, vim, sublime text, eclipse, etc)… pero no me las preguntes a mí! instala Tern, y comienza a descubrirlas :D

Haciendo snippets con yasnippet

Hace muuucho tiempo prometí que escribiría una guía sobre cómo usar emacs para programar cosas web, y luego me olvidé ‘¬’

bueno, hoy lo volví a recordar XD

Recordarás que ya había escrito algo sobre cómo instalar yasnippet , esta vez quisiera compartir algunos snippets rápidos que creé, y que ahora los uso todo el tiempo mientras programo “cosas” web.

Pero más que compartir snippets ya hechos, quiero mostrarte cómo crear tus propios snippets, y algunas ideas para usar los snippets para aprender a usar librerías nuevas. Pero vamos en orden XD

No es necesario, pero talvez quieras instalarte primero web-mode (que te proveerá highlighting para php).

Lo que sí necesitarás, es yasnippet.

0. ¡¿qué es un snippet?!

Un snippet es un trozo de código que puedes “invocar” con una palabra clave. (Como el

 syso -> System.out.println(); de eclipse 

)

1. Haciendo tu propio snippet

Para crear un snippet para un mode de emacs, necesitas crear un archivo con la información del snippet en el directorio

 ~/.emacs.d/snippet/xxx-mode 

. En donde ‘xxx’ es el nombre del mode.

Por ejemplo, si quiero crear un snippet para javascript, tengo que crear un archivo llamado

 ~/.emacs.d/snippet/js-mode/mi-snippet 

.

El contenido de ese archivo debe ser algo así:

 
  # name: nombre
  # key: clave
  # --
  hola snippet

“clave” es la palabra clave que usarás para invocar al snippet. Puedes tener varios snippets con la misma clave, y allí es donde entra la importancia del “nombre”. Cuando tienes varios snippets que invocar con la misma palabra clave, te saldrá un menú desde el que puedes elegir cuál es el snippet que quieres elegir. Si le haz puesto nombre a tu snippet, entonces, el texto que esté en “nombre”, será el texto que se mostrará en ese menú.

Ahora, para probar tu nuevo snippet, abre un archivo javascript: “archivo.js”, luego: “M-x yas-reload-all” (eso hará que el snippet que acabas de crear se registre, sin tener que reiniciar tu emacs), ahora, en ese archivo, escribe “nombre”, y presiona “TAB” (o la tecla que uses para expandir un snippet). Si lo haz hecho bien, la palabra “nombre” debería desaparecer, y en vez de ella, apareció “hola snippet” (que es el código predefinido que escribimos en el snippet)… … genial, no? :D

Se pueden hacer cosas más complicadas con un snippet. Puedes poner campos de texto dentro del código predefinido… es complicado de explicar XD lo entenderás mejor si lo pruebas…

1.1 Un ejemplo dice más que mil palabras.

Antes de leerte todo este blog, talvez quieras probar este snippet, que probablemente despejará todas tus dudas, y así puedas saltarte a la 2da parte: usando snippets para aprender cosas nuevas.

 
  # name: un snippet esclarecedor
  # key: tutorial
  # --
  for (int ${1:i}=${2:0}; $1 < ${3:n}; ${4:$1++}) {
    $0
  }

Entendido? no? bueno… entonces lee el resto del blog XD

1.2 Un snippet más complicado

Ahora, haremos un snippet para hacer un div. Generalmente, cuando hacemos aplicaciones web, queremos hacer divs, y estos divs suelen tener clases diferentes. El div es el mismo, lo único que cambia, es su clase (y talvez, su id), algo así:

 
  <div class="esto siempre cambia" id="y esto también">  
    este es el contenido del div :P
  </div>

Vamos a hacer un snippet para “optimizar” el div xD

Crea un snippet llamado

 ~/.emacs.d/snippet/html-mode/tutorial-div 

el contenido es:

 
  # name: div class id
  # key: div
  # --
  <div class="$1" id="$2"> $0 </div>

Este snippet es igualito al que hicimos antes, la única diferencia son los “$”. Abre un archivo html y pruébalo por tu cuenta.

Notarás que el cursor ya no está al final del código predefinido, ahora está en “$1”, y el “$1” ha desaparecido. Prueba escribir algo, y a continuación, presionar “TAB”. Ahora el cursor se detuvo en el “$2”. Escribe algo de nuevo, y presiona tab. Ahora, el cursor se detuvo en $0, y el fondo de lo que escribes ya no está resaltado. “El snippet ha terminado”, y el cursor se quedó en $0.

1.3 Un snippet con texto por default

Suele pasar que, una porción de texto del código necesita ser cambiada, pero no muy seguido… por lo general, no cambia. Para esto, se le puede poner texto por defecto a cada snippet.

Por ejemplo, cuando comenzamos a hacer una página web, el idioma suele ser el español, pero podría ser otro.

Este snippet llamado

 ~/.emacs.d/snippet/html-mode/tutorial-html 

, escribe el esqueleto de un html:

 
  # name: esqueleto de html
  # key: html
  # --
  <!DOCTYPE html>
  
  <html lang="${1:es}">
    <head>
      <meta charset="${2:utf-8}" />
      <title>$3</title>
    </head>
    
    <body>
      $0
    </body>
  </html>

De nuevo, abre un archivo html, reinicia yasnippet con “M-x yas-reload-all”, y prueba el snippet con “html” “TAB”. Esta vez, el cursor se detendrá en lang=”…”, y, por defecto, estará escrito “es”, pero… en cuanto escribas algo, se borrará “es”, y se reemplazará por lo que escribas. Lo mismo pasará con charset. Luego, en title, pasará lo que ya expliqué en la sección anterior, y el snippet terminará, y el cursor se quedará dentro de body.

1.4 Reusando el texto

A veces, queremos reusar el texto que ya hemos escrito (como con los \begin{environment} \end{environment} de LaTeX, o con los tags de html).

Este es uno de los snippets que tengo en mi “arsenal” XD

 
  # name: generic tag
  # key: <
  # --
  <$1$2> $0 </$1>

De nuevo, abre un archivo html, reinicia yasnippet, y prueba el snippet que acabas de hacer escribiendo “<" "TAB". en $1, escribes el nombre del tag, observa cómo lo que escribes al abrir el tag, también se escribe cerrando el tag. Al presionar tab, puedes escribir las opciones del tag. Por último, el snippet se sale, y el cursor se queda en $0.

La segunda parte: usando snippets para aprender cosas nuevas, la escribiré después, me da flojera XD

AWK: Extrayendo datos del output de los comandos de la consola

estoy aprendiendo AWK :D (o al menos, lo añadí a la interminable lista de cosas que tengo que saber antes de morir XD). Parece interesante, sirve para extraer datos, y se puede usar para extraer datos mediante los comandos de Linux…

Aquí una probadita:
ls -l | awk -v size=$1 '{ if ($5 >= size) print $9}'

muestra todos los archivos mayores a un tamaño que se le envía como parámetro al script.

El funcionamiento es bonito y sencillo de entender ^w^

Cada línea del ls se le envía al awk como un conjunto de “parámetros”, por eso, no podemos usar los parámetros que se le envíen a nuestro script por consola dentro del awk, sencillamente con un “$1”!!. Para solucionarlo, le digo al awk, explícitamente, que la variable “size” tendrá el valor del primer parámetro que se le envíe a mi script. Eso lo hago con -v (que aún no sé para qué sirve XD yo también estoy aprendiendo…).

Awk parte la línea en columnas, y cada columna es enviada a awk como un parámetro. En este caso, ls -l tiene 9 columnas, por lo que, cada vez que comienza una nueva línea en ls, es como si le enviaramos 9 parámetros:


$1.........$2.$3.$4..$5.....$6..$7.$8....$9
-rw-r--r-- 1 vg vg 733817 Jun 24 10:08 ch08.pdf

el 5to parámetro, que contiene el tamaño de los archivos. Así que, dentro del comando awk, la usamos como si fuera una variable: “if ($5 >= size)”.

Luego, si la condición se cumple, imprime el parámetro $9, que es el nombre del archivo.

Edit: el -v solo sirve para declarar variables antes de entrar al código de awk XD
awk --help | awk '{ if(index($1, "-v")) print $0}'
(sí, sé que es más fácil con | grep -v pero quería hacerlo con awk, solo for the lulz

Data-show en GNU/Linux like a boss!

Antes de comenzar… debería aclarar que, aquí en Bolivia, le decimos data-show al proyector? :D

Es fácil con XRandR!!, (es la herramienta oficial para configurar el RandR).

xrandr tiene muchas utilidades, pero en esta ocasión, intentaré proveer un tutorial sobre cómo conectar tu computadora con GNU/Linux a un proyector (comúnmente llamado data-show, aquí en Bolivia XD). Este tutorial también te ayudará a conectar tu computadora a un televisor, o cualquier otra pantalla. Si quieres más información, RTFM! Comenzamos? :D

Antes que nada, verifica si tienes la herramienta (estoy 100% casi segura de que la tienes si usas GNU/Linux Debian XD).

  
    $ xrandr -v
  

Al ejecutar este comando, debería aparecerte la versión de tu xrandr. Si te aparece

  
    bash: xrandr: command not found
  

es porque no tienes xrandr y tendrás que instalarlo ·n·

Buscando el nombre del data-show

Necesitamos saber el nombre con el que la computadora detectó el data-show! para esto, sigue estos pasos…

Ejecuta este comando

  
    $ xrandr
  

Te saldrá una lista de los dispositivos de salida de video (proyectores, pantallas, etc) que estén conectados a tu computadora. La lista se verá algo así:

  
LVDS1 connected 1280x800+0+0 (normal left inverted right x axis y axis) 286mm x 17900mm
   1280x800       60.0*+
   1024x768       60.0  
   800x600        60.3     56.2  
   640x480        59.9  
  

En este caso LVDS1 es la pantalla de mi laptop. No olvides este nombre! este es el NOMBRE-DE-TU-PANTALLA

Conecta tu equipo al proyector o pantalla, y ejecuta:

  
    $ xrandr
  

de nuevo saldrá la lista de los dispositivos de salida de video conectados a tu computadora, pero esta vez, un nuevo dispositivo aparecerá en la lista.

¿Recuerdas el nombre del dispositivo de video de tu laptop? en mi caso, se llama LVDS1… el otro dispositivo es la pantalla o data-show al que quieres conectar tu laptop. En mi caso, el dispositivo se llama VGA1. Este es el nombre que estabamos buscando!! el NOMBRE-DEL-DATA-SHOW

  
LVDS1 connected 1280x800+0+0 (normal left inverted right x axis y axis) 286mm x 17900mm
   1280x800       60.0*+
   1024x768       60.0  
   800x600        60.3     56.2  
   640x480        59.9  
VGA1 connected (normal left inverted right x axis y axis)
   1440x900       59.9 +   59.9  
   1400x1050      60.0  
   1280x1024      60.0  
   1280x960       60.0  
   1360x768       60.0  
   1280x800       74.9     59.8  
   1152x864       75.0  
   1280x768       74.9     59.9  
   1024x768       75.1     75.0     70.1     60.0  
   800x600        72.2     75.0     60.3     56.2  
   848x480        60.0  
   640x480        75.0     72.8     60.0     59.9  
   720x400        70.1  
HDMI1 disconnected (normal left inverted right x axis y axis)
  

Conectando el equipo al data-show

Ahora sí, con esta información, podemos conectar nuestra computadora al dispositivo de video! Solo tienes que ejecutar el siguiente comando:

  
    xrandr --output NOMBRE-DEL-DATA-SHOW --same-as NOMBRE-DE-TU-PANTALLA
  

Y tadah! tu laptop estará conectada al data show!

BONUS

Y como “yapa” XD un poco más de información…

Si las letras están muy pequeñas, intenta cambiar la resolución, así:

  
    xrandr --output NOMBRE-DEL-DATA-SHOW --mode 640x480
  

y si quieres ver cosas distintas en tu proyector y en tu laptop, usa esto:

  
    xrandr --output NOMBRE-DEL-DATA-SHOW --left-of NOMBRE-DE-TU-PANTALLA
  

y si quieres más información RTFM! ^ w ^ o intenta…

  
    xrandr --help
    man xrandr
  

oh btw… la otra vez estaba ejecutando el evince para visualizar las diapositivas en el datashow, desde la consola, y los chicos creyeron que estaba hackeando el proyector o__O funny huh? XD