9Menu

O como darle un menú propio a esos entornos que no lo tienen.

Hoy vamos con un pequeño programa que nos permitirá darle un menú de aplicaciones a esos entornos que no lo tienen. O el que tienen no nos gusta (Sí, lo digo por ti, dmenu).
Eso lo haremos con 9menu, una pequeña herramienta que podremos configurar al gusto, y que aún por encima permite tanto el uso del ratón como el del teclado.

Aviso de antemano, que esto va en la línea de “El minimalismo es bonito“. Y sí, 9menu es bonito, minimalista, y sobre todo ligero hasta decir basta. No soporta iconos, funciona con 2 colores, y carga en un suspiro para mostrarnos una interfaz ncurses donde podremos poner lo que más rabia nos dé.
Para instalarlo, que es lo primero, como siempre, con apt-get:

sudo apt-get install 9menu

Una vez instalado, es conveniente (muy conveniente, de hecho) leerse el man, porque no es que haya una cantidad atroz de documentación en la web. Sí, nos dicen como hacer un menu simple, pero ya está. Y yo en mi caso, soy bastante maniático con eso de que se vea lo que yo quiero, y como yo quiero. Por eso vamos a usar una opción que es la de file. Con esto, lo que haremos es invocar el menu desde un script, para que cargue menús y sí, submenús.
De entrada, vamos a poner en claro unas pocas opciones de 9menu, y como de costumbre al final del post pondré el mío para dar ideas.

Las opciones:

  • Como casi siempre, parte de las opciones son estéticas. Con -fg (foreground) y -bg (background) elegiremos los colores de las letras y el fondo, respectivamente. En el caso de los colores hexadecimales, hay que recordar que deben ir entrecomillados. Así, por ejemplo, al color 232323 del fondo le diremos que lo exprese con -bg ‘#232323’. Si, por el contrario, queremos un color fijo, basta con poner el nombre, como puede ser pink, blue, grey90 o lo que sea.
  • El tipo de fuente es un poco judiada. La versión estable de Debian nos permite poner una fuente, siempre que sea una xfont. Con lo que eso de poner “sans”, por ejemplo, no funciona. Yo uso en i3 la fuente terminus, de modo que sea fácil de leer. Para saber que fuentes hay disponibles en este modo, basta con ejecutar xfontsel, y desde ahí ir “armando” poco a poco la fuente. En general, lo importante suelen ser los 3 primeros *, y el del tamaño.
  • Warp, y Teleport. Son 2 caras de una moneda. Warp traslada el cursor del ratón directamente al menú, el cual, salvo que tengamos configurada alguna opción específica de localización, sale en el medio de la pantalla. Muy recomendable en el caso de escritorios tiling, donde nos moveremos con el teclado de normal. En cambio, Teleport lo que hará es transportar el menú a donde tengamos el ratón.
  • Popup, Popdown e Iconic. Aquí no hay mucha historia. Popdown e Iconic actúan juntos, indicando al primero que una vez hayamos seleccionado una opción del menú se iconifique, y el segundo, simplemente para que inicie iconificado. Popup, sin embargo, es la opción más cómoda y que hace que se parezca más a un menú “al uso”, cerrando 9menu en cuanto seleccionemos una opción. Yo, personalmente, dado el tiempo de carga (0) y el pequeño peso de este programa, es lo que recomiendo.
  • Y el resto de parámetros son bastante obviables, las cosas como son.

Lo primero, ahora que ya tenemos más claro que hace este programita, vamos a darle una apariencia más pulida. Si queréis ver “como se ve esta cosa” basta con ejecutar 9menu sin parámetros, y veréis bien que es feo, a rabiar.
Con eso en mente, empecemos:

  1. Le daré el color de fondo #232323 para que combine con el resto de i3, y el color de frente #e1e1e1 para tener un buen contraste.
  2. La fuente será la terminus. Se ve bien, y es fácil de codificar con -*-terminus-*-*-*-*-14-*-*-*-*-*-*-*
  3. Para el comportamiento, me gusta que el menú se cierre cuando haya seleccionado, así que usaré la opción popup.

Con esto en mente, el parámetro inicial será:

9menu -popup -fg ‘#e1e1e1’ -bg ‘#232323’ -font ‘-*-terminus-*-*-*-*-14-*-*-*-*-*-*-*’ -file

Tomando eso en cuenta, y para evitarnos el churro de comando, vamos a generar un script que tomará todo esto, y lo condensará en una simple orden: 9m

Abrimos una terminal, nano, y creamos un archivo de texto con el nombre 9m. Dentro metemos esto:

#!/bin/sh

9menu -popup -fg ‘#e1e1e1’ -bg ‘#232323’ -font ‘-*-terminus-*-*-*-*-14-*-*-*-*-*-*-*’ -file “$@”

Guardamos, cerramos y lo copiamos a /usr/bin, donde le daremos permisos de ejecución:

sudo cp 9m /usr/bin

sudo chmod +x /usr/bin/9m

Con esto, cada vez que ejecutemos “9m”, nos tomará los parámetros que le hemos indicado, y nos quedará el menú más limpio y ordenado.

Vale, ¿Qué narices es eso de “file“?
9menu permite varias opciones a la hora de meterle elementos al menú. Hay la normal, con -label (Que ni la he tratado, por algo será), y la de hacerlo más bonito, que es la que vamos a emplear. Con -file, lo que hacemos es indicarle que coja los datos de un archivo de texto.
Para ello, vamos a partir de una instalación mínima y completamente irreal, donde tendremos estos elementos:

pcmanfm
medit
lxterminal
firefox
transmission

Esto nos servirá para hacer el ejemplo. Así pues, abrimos nano en una terminal e iniciamos un archivo al que llamaremos menu.sh y lo dejamos así:

Pcmanfm : pcmanfm
Medit : medit
Terminal : lxterminal
Internet > : 9m internet.sh
Salir : exit

Guardamos, y abrimos uno justo al lado llamado internet.sh, para enlazar y hacer un “submenú”.

Firefox : firefox-esr
Transmission : transmission-gtk

Volver: 9m menu.sh

¿Qué he hecho con esto? He creado un menú principal en donde podremos acceder a 3 aplicaciones (pcmanfm, lxterminal y medit) y un submenú que nos llevará al apartado de internet (firefox, transmission) y volver al menú principal.
Ya se ve que el “sistema” para crear el listado es tremendamente simple. La ventaja de hacerlo en varios archivos es, por un lado, que nos permitirá categorizar lo que tenemos instalado, y que si necesitamos modificarlo lo podremos hacer en un momento.

Seguramente el código se vea horrendo en el blog, dado que no uso una fuente de espacio fijo, pero hay unos tips a tener en cuenta:

  1. Merece la pena hacer la edición en nano, entre otras cosas porque nos marcará el espacio que dejamos (Si queremos dejarlo, que eso es cosa de cada cual, si no se especifica 9menu cogerá el espacio mínimo del nombre más largo).
  2. Si queremos dejar espacios, debe ser con la barra espaciadora. El tabulador no lo coge como espacio, y nos quedará descuadrado.
  3. Cuidado con los saltos de línea. No pasará nada malo, ojo, simplemente que 9menu coge la codificación utf-8 y ese salto de línea lo codificará con caracteres (Bastante feos, la verdad). Si queremos dejar un espacio, recomiendo marcarlo con la barra espaciadora para que salga en blanco.
  4. 9menu no coge el ascii complejo. Y lo intenté, ntchs.

Ahora, la parte clave. ¿Y esto como lo integro en mi escritorio?
En i3 basta con añadirlo al ~/.i3/config con

bindsym $mod+s exec –no-startup-id 9m menu.sh

Si lo que se busca, sin embargo, es configurarlo en el botón central del ratón (por ejemplo) puede hacerse con xdotool y xbindkeys. Para ello, instalamos

sudo apt-get install xdotool xbindkeys

Una vez lo tenemos, abrimos un archivo llamado xbindkeysrc

medit ~/.xbindkeysrc

Y dentro introducimos el comando a usar. En el caso de querer usar, por ejemplo, la tecla Windows+s, usamos la combinación mod4+s, así que lo codificamos de este modo, y lo asociamos al botón 2 del ratón:

“xdotool key mod4+s”
b:2

Con esto, lo que hemos hecho es una cosa un poco rara: Le hemos indicado a xdotool que introduzca esa combinación de teclas, y a xbindkeys que la asocie al botón central.
Para que todo esto funcione, añadimos a la secuencia de inicio /usr/bin/xbindkeys.

Aviso que esto no funciona en i3, lamentablemente.

Todo es ir jugando con la configuración del menú, pero es una aplicación muy rápida y versátil (Y por qué no, elegante) para poder tener menú en esos entornos donde no lo hay. Como ejemplo, aquí está el mío inicial, que enlaza con otros submenús, los pegaré uno a uno:

menu.sh

MENUS : exit
Marcadores Web : 9m /home/nacho/scripts/firefox.sh
Juegos y utilidades : 9m /home/nacho/scripts/juegos.sh
Gestion del sistema : 9m /home/nacho/scripts/gestion.sh
Herramientas de edicion : 9m /home/nacho/scripts/edicion.sh
Scripts : 9m /home/nacho/scripts/scripts.sh

Salir: exit

juegos.sh

JUEGOS : exit
Interfaz de Steam : steam
ZsNES : zsnes /media/almacen/Programas/Roms/
Starfighter : starfighter
UTILIDADES : exit
Play On Linux : playonlinux
QJoypad : qjoypad

Volver: 9m menu.sh

gestion.sh

GESTION : exit
Synaptic : zenity –password | sudo -S synaptic
Htop : xterm -fa monospace -fs 10 -bg ‘#232323’ -e htop
Firewall gUFW : zenity –password | sudo -S gufw
Gestor de Nvidia : nvidia-settings
Virtual Box : virtualbox
Transmission : transmission-gtk
APARIENCIA : exit
LxAppearance : lxappearance
Nitrogen : nitrogen
QtConfig : qtconfig

Volver: 9m menu.sh

edicion.sh

IMAGEN : exit
Gimp : gimp
Inkscape : inkscape
AUDIO / VIDEO : exit
Avidemux : avidemux
Audacity : audacity
TEXTO : exit
Libreoffice : libreoffice
Medit : medit
Font Manager : font-manager
Py Renamer : pyrenamer

Volver: 9m menu.sh

scripts.sh

VARIOS : exit
Update : lxterminal -e sudo update
Configurar Logitech : lxterminal -e jscal -c /dev/input/js0
I3 : exit
I3 Config : medit /home/nacho/.i3/config
I3Status Config : medit /home/nacho/.config/i3status/config
9MENU : exit
Menu.sh : lxterminal -e nano /home/nacho/scripts/menu.sh
Juegos.sh : lxterminal -e nano /home/nacho/scripts/juegos.sh
Gestion.sh : lxterminal -e nano /home/nacho/scripts/gestion.sh
Scripts.sh : lxterminal -e nano /home/nacho/scripts/scripts.sh
Edicion.sh : lxterminal -e nano /home/nacho/scripts/edicion.sh

Volver: 9m menu.sh

2017-01-11-163951_1920x1080_scrot

* En el blog no aparecen los espacios (Se los ha comido, directamente) pero garantizo que están. En la imagen sale como queda.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s