Arrancar aplicación al iniciar sesión en Linux

He construido una aplicación en Python que te muestra una imagen diferente cada día. Las fotografías son del cielo, las estrellas y el universo. ¡Preciosas!

Para ello la app se conecta a una API de la NASA llamada APOD (Astronomy Picture of the Day) y cargo la imagen con el método que expliqué en el artículo "Usar una imagen de una URL sin descargarla en TKinter (Python)".

¿Y si hacemos que la aplicación se abra automáticamente cuando iniciamos sesión en Linux?

¡Veámoslo!

Automatizar arranque de una aplicación al iniciar sesión en Linux

La magia de Linux <3

Linux es, actualmente (y seguro que para siempre) el sistema operativo más personalizable que existe. Al ser de código libre no hay límites, todo el mundo puede aprender las reglas y jugar a su antojo con ellas.

Eso no lo hace ni mejor ni peor, sencillamente permite satisfacer esa necesidad que tenemos algunos de cacharrear con nuestros "juguetes" (a sabiendas de que podemos romperlo todo... TODO).

Probablemente seguirán existiendo fanáticos defendiendo que Linux es el mejor sistema operativo, así como otros lo harán con Windows o con MacOS. Para mí solo podríamos decidir el orden del podio si especificamos concretamente en qué tarea estamos comparándolos.

Seamos sinceros, la mejor herramienta siempre será la que satisfaga las necesidades de un usuario en concreto, sobre todo si le resulta sencillo e intuitivo. ¿Para qué va a preferir un periodista Linux por delante de MacOS? ¿Qué sentido tiene jugar en MacOS para un gamer profesional?

Volviendo al tema. En este post trataré de explicar dos maneras diferentes de automatizar el arranque de aplicaciones al abrir tu sesión de usuario, y por lo tanto no afectará a otros usuarios. También se podría hacer genérico al sistema y que afecte a todos, pero no trataremos eso aquí.

¿Qué distribución Linux uso?

En mi caso uso Linux Mint que es una distro basada en Ubuntu. Cualquier distro basada en Ubuntu debería servir.

Recuerda que son distribuciones que usan GNOME como entorno de escritorio.

¿Iniciar sesión o arrancar Linux al encender ordenador?

Cuando hablamos de inicio de sesión no debemos confundirlo con el arranque de Linux al encender la computadora. Cuando le damos el botón de ON/OFF del PC, éste empezará ciertos procesos que permitirán cargar todo el sistema operativo y dejarlo bien preparado para que a partir de allí puedas jugar con él.

Evidentemente estos procesos pueden ser configurados al gusto del consumidor, pero en éste artículo no hablaremos de ello, sino de los procesos que se arrancan al iniciar sesión con tu usuario.

Método sencillo

Existe en Linux un administrador de aplicaciones que arranquen al iniciar sesión llamado "Aplicaciones al inicio". Podrás encontrarlo en el menú principal, en el apartado de "Preferencias".

El gestor está compuesto de:

  • Una caja central donde aparece la lista de aplicaciones que pueden (o no) arrancar al inicio de sesión.
  • Botones para añadir o borrar aplicaciones a la lista.
  • Un botón para editar la configuración de arranque de las aplicaciones
  • Un botón para arrancar una de las aplicaciones de la lista a modo de prueba.
(No tiene nada que ver pero estamos hablando de una lista de botones que hacen el clásico CRUD)

Caja central: lista de aplicaciones

Un listado de diferentes aplicaciones a las que puedes activarles su opción de autoarranque. Podrás añadir más a la lista o borrarlas todas.

  • Nombre y logo de la aplicación
  • Retraso: número de segundos que tarda en arrancar la aplicación desde el inicio de sesión (por defecto son cero segundos).
  • Activación: puedes activar o desactivar el autoarranque sin tener que borrar la aplicación de la lista.

Editar

Al hacer click en el botón del lápiz "editar" se abrirá una ventana, donde aparecerá las características de la aplicación seleccionada:

  • Nombre: el nombre con el que se hace referencia en la lista (no tiene que coincidir con el nombre de la aplicación, aunque sería lo lógico).
  • Orden: el comando (en Bash, por ejemplo) que activará.
  • Comentario: cualquier anotación, como una descripción.
  • Retraso: el retraso en segundos que tardará en arrancar desde el inicio de sesión.

Agregar aplicaciones

Al pulsar el botón de sumar "agregar" podrás escoger entre dos opciones:
  • "Elige una aplicación", que te abrirá una lista de las aplicaciones instaladas en tu SO para seleccionar una.
  • "Orden personalizada", abrirá una pantalla idéntica a la que usamos para editar una aplicación pero en este caso vacía. Útil para usar un Bash Script o cualquier aplicación no instalada.

¡Vamos a probarlo juntos!

Haz clic en el botón "sumar" para añadir una nueva aplicación a la lista, escoge la opción "Elegir una aplicación" y luego busca la calculadora entre la lista de aplicaciones.

Ahora puedes cerrar la sesión (NO es necesario reiniciar el PC) y volverla a abrir. La calculadora quedará abierta al cargar tu escritorio.

Puedes probar de editar el retraso con, por ejemplo, cinco segundos.

Método en "modo hacker"

Trabajar con el gestor es amigable gracias a su UI, y no es peor que lo que vamos a ver ahora, pero si estamos hablando de configurar Linux es porque nos gusta entrar en "modo hacker" y sentirnos poderosos a la par que sexys.

Tranqui, es sencillo de aprender y aplicar, confía en mí.

Concepto básico

Cuando arrancas el PC y empieza una nueva sesión, el sistema operativo pone en marcha diferentes ordenes almacenadas en ficheros (o archivos) en algún lugar del disco. 

En este caso nosotros buscamos un tipo de fichero .desktop.

Los ficheros .desktop son todo un tema que darían para una entrada completa (más adelante), así que para esta ocasión no vamos a entrar en detalle e iremos al grano.

Lo importante es que entiendas que lo que necesitamos es crear un fichero con extensión .desktop que va a contener la orden que quieras arrancar al iniciar la sesión.

Localización del archivo

Dirígete al siguiente directorio:

~/.config/autostart

Si has seguido el mini-tutorial deberías observar un fichero con extensión .desktop y que su nombre haga referencia a la calculadora. En mi caso:

org.gnome.Calculator-1.desktop

Ahora abre el archivo con tu editor de texto. Deberías ver algo parecido a lo siguiente:

[Desktop Entry]
Name=Calculator
Comment=Perform arithmetic, scientific or financial calculations
Keywords=calculation;arithmetic;scientific;financial;
Exec=gnome-calculator
Icon=org.gnome.Calculator
Terminal=false
Type=Application
StartupNotify=true
Categories=GNOME;GTK;Utility;Calculator;
X-GNOME-Bugzilla-Bugzilla=GNOME
X-GNOME-Bugzilla-Product=gnome-calculator
X-GNOME-Bugzilla-Component=general
X-Ubuntu-Gettext-Domain=gnome-calculator
X-GNOME-Autostart-enabled=true
NoDisplay=false
Hidden=false
Name[es_ES]=Calculadora
Comment[es_ES]=Realice cálculos aritméticos, científicos o financieros
X-GNOME-Autostart-Delay=0

¡Aquí hay mucha paja!

En el archivo anterior hay mucho contenido y gran parte de él no tiene nada que ver con el tema que estamos tratando. Ahora solo nos interesa lo imprescindible para cumplir con nuestra misión.

Nos quedaremos solo con la siguiente parte de texto:

[Desktop Entry]
Exec=gnome-calculator
Type=Application
NoDisplay=false
Hidden=false
Name[es_ES]=Calculadora
Comment[es_ES]=Realice cálculos aritméticos, científicos o financieros
X-GNOME-Autostart-enabled=true
X-GNOME-Autostart-Delay=0

Vamos por partes:

  • [Desktop Entry] - qué tipo de archivo es.
  • Exec - la orden que deberá ejecutar.
  • Type - "Application" para que lo reconozca como una aplicación de escritorio
  • NoDisplay y Hidden - ambos deben estar en false para que aparezca en la ventana "Aplicaciones al inicio"
  • Name y Comment - hace referencia al nombre y una descripción (este último opcional) de la aplicación a abrir, pero puedes escribir lo que quieras (mientras lo entiendas tú).
  • X-GNOME-AUTOSTART-enabled y X-GNOME-AUTOSTART-Delay - aquí está la chicha del asunto.

X-GNOME-AUTOSTART

Es aquí donde podemos activar el arranque automático al iniciar sesión de usuario.

X-GNOME-AUTOSTART-enabled se encarga de si el programa debe o no debe arrancar automáticamente. Por defecto es false, así que no arrancan los programas hasta ejecutar el comando. Pero al modificarlo a true el programa arrancará automáticamente.

X-GNOME-AUTOSTART-Delay se encarga del tiempo (en segundos) que tardará en arrancar el programa una vez iniciada la sesión de usuario. Por defecto es 0.

El archivo final

En conclusión: tu objetivo final será construir un archivo (con el nombre que quieras) .desktop que contenga las variables mencionadas y con la orden de ejecución del programa que elijas.

Ahora bien, ¿recuerdas la introducción de este post? Allí he comentado que he usado este sistema para abrir una aplicación en Python hecha por mí. No es ningún programa instalado en el equipo, sino un fichero Python (.py). Para poder ejecutarlo he creado un Bash Script que abre correctamente el archivo Python desde su intérprete. Pero el tema de los Bash Script (.sh) lo dejaremos para más adelante en otra entrada.

Comentarios

Entradas populares de este blog

Café con Bits 12 ☕ ¡Mi primera RubyGem!

¿Terminal o Shell? Qué son y en qué se diferencian

Café con Bits 6 ☕ Lo que no te explican en Internet