Un blog de...

Mi foto
Un ente multicelular, polisistemático, psicosocial y ciberespacial; hiperlaboral, intersintético, polifacético, uniespiritual, hipoeconómico, tecnofílico, pseudopoético y megaridículo...

lunes, 27 de febrero de 2023

Donde pongo el ojo, pongo el emoji con IBus

 A raíz de un bug en la configuración de idioma de KDE Plasma, el Selector de emojis no muestra el catálogo más actualizado si el idioma del entorno de escritorio se configura a "Español".

Lo anterior me hizo aprender una forma más eficiente de insertar emojis: el IBus.

Te cuento cómo lo hice AQUÍ.

Saltando de Ubuntu 20.04 a Kubuntu 22.04

Comento a detalle el proceso de actualización incluyendo aspectos como:

  • Problemas con el espacio disponible en partición de sistema.
  • Importancia y recomendaciones para el respaldo de información (Syncthing y Back In Time como protagonistas de este punto).
  • Reemplazar la versión snap de Firefox, que viene predeterminada desde Ubuntu 22.04, con la versión DEB de los repositorios de Mozilla. Esto ofrece la ventaja de poder seguir usando el perfil de usuario, recuperando historial, datos de navegación, extensiones, confguración, etc.)
  • Activar la hibernación en Kubuntu 22.04.

Revisa la publicación completa AQUÍ.

De aquí en adelante

 

Con esta entrada inauguro un esquema diferente de comunicación.

Actualmente, mi blog principal lo gestiono en TiddlyWiki, lo bauticé como TiddlyBlog y lo alojé, en su momento, en TiddlySpot.

TiddlyWiki me ofrece un sinfín de ventajas a nivel de rapidez y flexibilidad respecto al contenido que puedo incluir en mis publicaciones, además de que, con el flujo de trabajo que diseñé, es mucho más sencillo generar mis borradores en local (incluso sin conexión a Internet) y luego subir lo definitivo a TiddlySpot, conservando siempre los originales en mis dispositivos.

Así que, de aquí en adelante, este blog servirá únicamente como índice/anuncio de las publicaciones que hago en mi TiddlyBlog.

lunes, 30 de agosto de 2021

Smartphone como extensión del escritorio de Ubuntu

¿Sabías  que puedes convertir tu smartphone en una pantalla adicional que extiende el escritorio de tu laptop?

La disposición habitual de pantallas físicas en mi oficina es la siguiente:

  • Pantalla de laptop (1600x900), ubicada como pantalla principal, al centro.
  • Pantalla adicional conectada al puerto HDMI-1 (1920x1080), ubicada a la izquierda de la pantalla principal.

Para extender mi escritorio a una tercera pantalla, uso un smartphone que está ubicado a la derecha de la pantalla principal.

La cuestión es ¿cómo consigo que la pantalla de mi smartphone funcione en calidad de extensión del escritorio de mi laptop? Tengo identificadas dos respuestas:

La más sencilla es usando Deskreen, con las desventajas de que no permite interactuar con el contenido desde el propio smartphone, no permite un control de la resolución y suele desconectarse con más frecuencia.

La segunda respuesta es más complicada, aunque más interesante y ofrece las ventajas de hacer posible la interacción con el contenido desde el propio smartphone y manipular la resolución. Esta opción es la que desglosaré y requiere de los siguientes ingredientes:

  • Red
    • La laptop y el smartphone deben estar conectados a la misma red de área local.
  • En la laptop:
    • Sistema operativo GNU/Linux (yo uso Kubuntu 20.04, pero otras distribuciones basadas en Debian funcionarán igual).
    • x11vnc instalado (muy recomendable tenerlo configurado para funcionar con contraseña y a través de SSH). Esto servirá para crear una pantalla virtual, "proyectable" en cualquier dispositivo que pueda ejecutar un cliente VNC.
    • Conexión "dummy" conectada a la salida VGA o, como en mi caso, conectar a dicha salida un cable que da a la entrada VGA del mismo monitor que tengo a la izquierda, esto es para hacer creer al sistema que hay un tercer monitor conectado.
    • Terminal de comandos (yo uso Konsole, pero cualquier otra funcionará igual).
  • En el smartphone:
    • Sistema operativo Android (aunque seguro también hay forma de hacerlo funcionar en iOS).
    • Alguna app que funcione como cliente VNC (yo uso Remote Ripple PRO).
    • Si se usa SSH, alguna app que permita redirigir puertos (yo uso ConnectBot).

En los siguientes pasos se asume que x11vnc ya está configurado con contraseña y que el smartphone ya tiene configurada una conexión SSH hacia la laptop.

Etapa 1: Hacerle creer a mi laptop que hay una tercera pantalla física conectada

  1. Obtener la información de los puertos de video disponibles en la laptop:

    xrandr Screen 0: minimum 320 x 200, current 3520 x 1080, maximum 16384 x 16384 eDP-1 connected primary 1600x900+1920+0 (normal left inverted right x axis y axis) 309mm x 174mm 1600x900 60.00*+ 59.99 59.94 59.95 59.82 1440x900 59.89 1440x810 60.00 59.97 1360x768 59.80 59.96 1280x800 59.99 59.97 59.81 59.91 1152x864 60.00 1280x720 60.00 59.99 59.86 59.74 1024x768 60.04 60.00 960x720 60.00 800x600 60.00 60.32 56.25 840x525 60.01 59.88 864x486 59.92 59.57 800x512 60.17 700x525 59.98 800x450 59.95 59.82 640x512 60.02 720x450 59.89 640x480 60.00 59.94 680x384 59.80 59.96 640x400 59.88 59.98 640x360 59.86 59.83 59.84 59.32 512x384 60.00 512x288 60.00 59.92 480x270 59.63 59.82 400x300 60.32 56.34 432x243 59.92 59.57 320x240 60.05 360x202 59.51 59.13 320x180 59.84 59.32 DP-1 disconnected (normal left inverted right x axis y axis) HDMI-1 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 509mm x 286mm 1920x1080 60.00*+ 1280x1024 60.02 1440x900 59.90 1280x800 59.91 1152x864 75.00 1024x768 70.07 60.00 800x600 60.32 56.25 640x480 66.67 59.94 720x400 70.08 DP-2 disconnected (normal left inverted right x axis y axis) HDMI-2 disconnected (normal left inverted right x axis y axis)


    Con la información obtenida, tomo nota de alguno de los dispositivos desconectados, en este caso DP-2
  2. Generar el modeline para la resolución con la que se desea proyectar en la pantalla virtual, en este caso será 1200x540 (para que coincida en proporción a las dimensiones de la pantalla del smartphone, sin que los textos queden diminutos) a 120 MHz:

    gtf 1200 540 120 # 1200x540 @ 120.00 Hz (GTF) hsync: 69.48 kHz; pclk: 112.28 MHz Modeline "1200x540_120.00" 112.28 1200 1280 1408 1616 540 541 544 579 -HSync +Vsync

  3. Crear un nuevo modo de resolución basado en el modeline obtenido en el paso anterior:

    xrandr --newmode "1200x540_120.00" 112.28 1200 1280 1408 1616 540 541 544 579 -HSync +Vsync

  4. Añadir el modo creado como una opción en la salida de video no usada realmente, conectada a un dummy o a un cable que lleva a una entrada no usada en el monitor, en este caso, DP-2:

    xrandr --addmode DP-2 1200x540_120.00

  5. Conectar el cable al puerto de salida de video no usado en la laptop y llevarlo al puerto de entrada de video no usado en el monitor, entonces, habilitar la pantalla virtual usando el nuevo modo añadido y usarlo para extender el escritorio a la derecha de la pantalla principal (en este caso, eDP-1):

    xrandr --output DP-2 --mode 1200x540_120.00 --right-of eDP-1

    Esto extenderá el escritorio a la pantalla virtual que, actualmente, es "invisible", aunque es posible notar que el puntero del ratón ya se puede mover más allá del borde derecho.

Hasta este punto, el diagrama de monitores que muestra la herramienta de configuración de pantallas de KDE-Plasma, ayuda a entender mejor lo que se está configurando:

Hacer visible la pantalla virtual en otro dispositivo (en este caso, en el smartphone)

A partir de lo anterior, el comando de x11vnc que se debe ejecutar en el equipo emisor (laptop) es:

x11vnc -localhost -usepw -forever -bg -geometry 1200x540 -shared -noprimary -auth /var/run/lightdm/root/:0 -display :0 -clip 1200x540+3520+450 -threads -noxdamage -noxwarppointer

Explico los parámetros:

-geometry establece la resolución de la sesión VNC y debe coincidir con el tamaño de la pantalla virtual: 1200x540.

-clip define una resolución objetivo (1200x540) y un recorte desde el borde izquierdo del escritorio actual (en este caso, se suma el ancho de la pantalla adicional al ancho de la pantalla principal, 1920+1600=3520), es decir, 3520 en el eje horizontal y 450 en el eje vertical. Nota: El recorte en el eje horizontal sería negativo si la pantalla virtual estuviera a la izquierda de la principal.

-threads y -noxdamage mejoran el desempeño de la conexión VNC para estos fines.

Por último, se conecta el otro dispositivo al servicio VNC, en este caso, conecto el smartphone así:

  1. Activo la conexión a la laptop mediante SSH desde ConnectBot y verifico que la redirección de puertos coincide con el servicio VNC, debe verse así:
  2. Activo la conexión VNC que, en RemoteRipple, debe estar configurada así:

    Lo importante son el Host (localhost) y el Puerto (5900, o el dato que arroje el comando de x11vnc en la laptop). El nombre puede ser cualquiera.

    Una recomendación que me encontré, es que, una vez activa la conexión, se configure un método de codificación con baja compresión, ya que los dispositivos están conectados a la misma red de área local, esto impactará poco en la velocidad de la red y mejorará notablemente el redibujado de la pantalla en el smartphone, porque requiere menos procesamiento.

    Al activar la conexión VNC, se mostrará la parte del escritorio de la laptop que se ha configurado para mirarse por esa vía. Es posible arrastrar ventanas desde cualquiera de las pantallas hacia la del smartphone. También es posible interactuar con esa parte del escritorio, ya sea desde el teclado y touchpad de la laptop o tocando físicamente la pantalla del smartphone.


lunes, 14 de junio de 2021

¿Tienes un minuto para hablar de TiddlyWiki?

Una de las principales razones para volver a publicar en este blog es hablar de TiddlyWiki, mi pieza de software favorita por versátil, potente, ligera y libre.

Hay muy pocas cosas relacionadas con gestión de información que no haya podido hacer mejor y a mi gusto con TiddlyWiki que con cualquier otro software, comencé por compararlo con Evernote, Google Keep y similares porque hace varios años, cuando lo descubrí, buscaba una herramienta GTD, pero lo cierto es que TidlyWiki también puede funcionar mejor que muchos programas para diagramas, catalogación de medios, diseño de manuales, elaboración de tesis, publicación de blogs...

Lo que hace a esta herramienta tan relevante es que garantiza que tu información se queda siempre en tu poder y permanece accesible por mucho tiempo porque, a diferencia de la mayoría de software propietario, TiddlyWiki es a prueba de futuro.

Si quieres comenzar a organizar mejor tus ideas y luego recurrir a tus notas con rapidez y de manera correlacionada, no esperes más y echa un vistazo al sitio oficial de TiddlyWiki.

En resumen, Tiddlywiki es un wiki contenido en un único archivo que funciona para gestionar notas de forma no lineal permitiendo capturar, organizar y compartir información sencilla y compleja, con alto potencial de automatización y personalización gracias a su filosofía en torno a Tiddlers (←ese enlace lleva a uno de mis Tiddlywikis publicados).

Es un excelente sistema para aprender a programar, incluso sin ser informático; hay una gran comunidad detrás, todos comparten sus descubrimientos y proyectos de forma libre, continua, clara y ejemplificada, se ayudan, nos ayudamos.


Desde que lo descubrí, a principios de 2014, he ido desarrollando varios proyectos propios que hace un año comencé a integrar en un "ecosistema" modular que nombré twl y que me ayuda a demostrar que, además de ser una potente herramienta para la gestión de información, TiddlyWiki puede mantenerse sincronizada entre dispositivos personales sin pasar obligatoriamente por ninguna nube comercial gracias a software libre como Syncthing.

Uno de los sitios que tiene un buen catálogo de ejemplos de Tiddlywiki aplicado a diversos propósitos es Dynalist.io. Entre ellos, cierro esta entrada con la recomendación de TiddlyMap, una herramienta para diseñar mapas mentales y conceptuales aprovechando la lógica de los tiddlers y usando un archivo autocontenido que puede seguirse trabajando sin conexión a Internet.

 

Hay infinitas formas de organizar la información que llega a nuestras vidas, hasta ahora, Tiddlywiki ha estado a la altura para ayudarme a explorarlas.

sábado, 9 de marzo de 2019

Iniciar un lapso específico de grabación de video desde línea de comandos

Fue necesario investigar en muchas fuentes y hacer varios experimentos, pero al fin conseguí realizar una grabación, iniciada en línea de comandos, desde la cámara web de una laptop de gama media (adquirida en 2011) con esta orden para VLC:
cvlc -I dummy v4l2:// :input-slave=alsa:// :v4l-vdev="/dev/video0" :v4l-norm=3 :v4l-frequency=-1 :v4l-caching:1500 :v4l-samplerate=44100 :v4l-channel=0 :v4l-tuner=-1 :v4l-audio=-1 :v4l-stereo :v4l-width=480 :v4l-height=640 :v4l-brightness=0 :v4l-colour=-1 :v4l-hue=-1 :v4l-contrast=0 :no-v4l-mjpeg :v4l-decimation=1 :v4l-quality=100 --sout-mux-caching=5000 --sout="#transcode{vcodec=mp4v,scale=0.7,acodec=mp4a,ab=96,channels=1,samplerate=44100}:standard{access=file,mux=mp4,dst=Vídeos/Desde casa/cam_`date +%Y-%m-%d_%H-%M-%S`.mp4}"
Para lograr que la grabación termine automáticamente después de un tiempo determinado en segundos, fue necesario insertar el comando en un script, ya que las referencias sobre utilizar parámetros internos de VLC como vlc://quit, --run-time=[segundos] y --stop-time=[segundos] no funcionaron en ninguna de las combinaciones. El script lo puse en ~/.local/bin/vlc_cam y su contenido es este:
  1. #!/bin/bash
  2. #Nombre del script: vlc_cam
  3. #Script para grabación desde webcam mediante vlc.
  4. #Este script fue desarrollado en Ubuntu 18.04.
  5. #Paquetes que deben instalarse previamente: vlc
  6. #Fecha de creación: 2019-01-22
  7. #Autor: @leoperbo
  8. echo '¿Cuántos segundos grabar?'
  9. read TIEMPO
  10. echo 'Presiona CTRL+C para interrumpir la grabación manualmente.' &&
  11. timeout "$TIEMPO" cvlc -I dummy v4l2: :input-slave=alsa: :v4l-vdev="/dev/video0" :v4l-norm=3 :v4l-frequency=-1 :v4l-caching:1500 :v4l-samplerate=44100 :v4l-channel=0 :v4l-tuner=-1 :v4l-audio=-1 :v4l-stereo :v4l-width=480 :v4l-height=640 :v4l-brightness=0 :v4l-colour=-1 :v4l-hue=-1 :v4l-contrast=0 :no-v4l-mjpeg :v4l-decimation=1 :v4l-quality=100 –sout-mux-caching=5000 –sout="#transcode{vcodec=mp4v,scale=0.7,acodec=mp4a,ab=96,channels=1,samplerate=44100}:standard{access=file,mux=mp4,dst=Vídeos/Desde casa/cam_`date +%Y-%m-%d_%H-%M-%S`.mp4}"
Además de solucionar la disfunción de parámetros de VLC asociados a la duración de una grabación, el script me ofrece estas ventajas:
  • Iniciar la grabación desde línea de comandos con una línea de texto corta (útil para control remoto vía SSH).
  • Decidir la duración de forma variable y rápida al iniciar la orden de grabación.
Para iniciar la grabación desde una terminal basta con escribir la ruta al script:
.local/bin/vlc_cam ¿Cuántos segundos grabar? 20 Presiona CTRL+C para interrumpir la grabación manualmente. VLC media player 3.0.4 Vetinari (revision 3.0.4-0-gf615db6332)

Páginas consultadas:

jueves, 7 de mayo de 2015

Carpetas compartidas desde Ubuntu (Samba)

Ubuntu permite compartir carpetas en redes domésticas (comúnmente conocidas como "Redes de Windows") a través del software "Samba". Como usuario, ni te enteras del nombre de dicho software, únicamente abres el explorador de archivos, das clic derecho sobre un directorio, seleccionas "Recurso compartido en red local" y veras una ventana llamada "Compartición de carpetas" en la que puedes activar la opción "Compartir esta carpeta", dar clic en el botón "Crear compartición" y ¡listo!... ¿Listo?
Lo que Ubuntu no te aclara es:
  • La vía fácil (menos segura) para acceder a tus carpetas compartidas desde otras máquinas: es necesario activar la opción "Acceso invitado (para personas sin una cuenta de usuario)".
  • La vía un poco más larga (más segura) para acceder a tus carpetas compartidas desde otras máquinas:
    1. Primero debes editar el archivo de configuración de Samba: en una terminal ejecuta:
      sudo nano /etc/samba/smb.conf
      Modifica la línea "server role" para que quede así:
      server role = member server
      Cierra y guarda.
    2. Después, debes agregar tu nombre de usuario a la lista de usuarios de Samba: en una terminal ejecuta:
      sudo smbpasswd -a tunombredeusuario
      (sustituye el término "tunombredeusuario" con tu nombre de usuario). Se te preguntará la contraseña de superusuario, después se te pedirá una contraseña para el usuario Samba que estás agregando, esta puede ser diferente a la contraseña de usuario Ubuntu.
    3. En la misma terminal ejecuta:
      sudo service smbd restart
Se pueden agregar usuarios Samba adicionales (deben coincidir con los nombres de usuario existentes en tu dispositivo Ubuntu), por ejemplo:
sudo smbpasswd -a tunovia

Las dos vías (fácil y larga) pueden combinarse para ofrecer distintos niveles de compartición de archivos y carpetas, por ejemplo:
  • Puedes compartir la carpeta "Público" para permitir acceso a invitados (sin cuenta de usuario) y colocar en dicha carpeta archivos que deseas compartir abiertamente y que NO contengan información que prefieras mantener privada.
  • Puedes, además, compartir otra carpeta, digamos "Compartido", para NO permitir acceso a invitados, de manera que únicamente las personas que tengan una cuenta de usuario Samba registrada en la máquina desde la que estás compartiendo podrán revisar su contenido.

Acceder a las carpetas compartidas desde otros equipos

Una vez establecidas tus carpetas compartidas, podrás acceder a ellas desde otros equipos conectados a la misma red local (al mismo router). Para ello basta con acceder al apartado de "Red Local" o "LAN" en cualquier software que ofrezca esta funcionalidad (Explorador de archivos de Windows, ES File Explorer en Android), quizás sea necesario solicitar al programa que refresque o actualice el contenido del aparatado de Red Local para que descubra tu equipo con carpetas compartidas:


En el caso de ES File Explorer para Android, si queremos acceder a carpetas compartidas que no admiten invitados, hay que presionar unos segundos sobre el icono del "servidor de carpetas compartidas" (tendrá el nombre de la computadora desde la que estamos compartiendo) y elegir la opción "Editar Servidor":

  1. Desactiva la opción "Anónimo"
  2. Coloca el nombre del Dominio (normalmente "WORKGROUP")
  3. Coloca el nombre de usuario de Samba registrado en Ubuntu
  4. Coloca la contraseña del usuario de Samba y presiona "OK"

A partir de ese momento, podrás acceder desde tu dispositivo Android a tus carpetas compartidas en tu dispositivo Ubuntu.