Pensé en esta idea luego de haber leído una serie de artículos publicados en el sitio web de @elav dónde relata las similitudes entre OS X y GNU/Linux. En una parte del artículo se menciona la incorporación —por primera vez en OS X “el Capitán”— de la opción Renombrar un archivo desde el menú contextual, algo normal en GNU/Linux.
A su vez se deja en evidencia la opción Duplicar —Archivo/s o Carpeta/s—. Esta tarea en distribuciones GNU/Linux la realizamos comúnmente en dos pasos: Copiar/Pegar, no tiene opción Duplicar en el menú contextual.
¿Por qué realizar dos pasos si también se puede hacer en uno?
Si bien la opción Duplicar ya viene incluida en el Gestor de Archivos Caja —la podemos encontrar en el menú Editar –> Duplicar—, el siguiente paso será añadirla al menú contextual como en OS X.
Todas las acciones del menú de Caja —o Nautilus, como comúnmente lo conocemos— se encuentran en un archivo de lenguaje XML ubicado en /usr/share/caja/ui/caja-directory-view-ui.xml —en el caso de Nautilus sería /usr/share/nautilus/ui/nautilus-directory-view-ui.xml—
Desde un terminal ejecutamos —con privilegios Root—:
cd /usr/share/caja/ui/ ## Hacemos la copia de respaldo sudo cp caja-directory-view-ui.xml caja-directory-view-ui.xml.back
Abrimos el archivo con nuestro editor habitual —recuerda escribir la ruta absoluta si no estás en la ubicación del archivo—:
sudo vim caja-directory-view-ui.xml
El contenido del archivo XML puede resultar algo confuso para los que no estamos acostumbrados a leer este tipo de lenguaje, aún así es interpretable. Como verán, es posible adaptar los menús a nuestras necesidades, sin embargo, en principio veremos como añadir la acción Duplicar al menú contextual.
Aquí podemos ver un fragmento del contenido del archivo caja-directory-view-ui.xml dónde están las opciones del menú Editar del Gestor de Archivos Caja, y entre ellas la línea que hace referencia a Duplicar: <menuitem name=”Duplicate” action=”Duplicate”/>, la cual copiaremos en otro fragmento del archivo.
... <menu action="Edit"> <placeholder name="Clipboard Actions"> <menuitem name="Cut" action="Cut"/> <menuitem name="Copy" action="Copy"/> <menuitem name="Paste" action="Paste"/> </placeholder> <placeholder name="Undostack Actions"> <menuitem name="Undo" action="Undo"/> <menuitem name="Redo" action="Redo"/> </placeholder> <placeholder name="Select Items"> <menuitem name="Select All" action="Select All"/> <menuitem name="Select Pattern" action="Select Pattern"/> <menuitem name="Invert Selection" action="Invert Selection"/> </placeholder> <placeholder name="File Items Placeholder"> <!-- Opción "Duplicar" del menú Editar--> <menuitem name="Duplicate" action="Duplicate"/> <menuitem name="Create Link" action="Create Link"/> <menuitem name="Rename" action="Rename"/> <menu action="CopyToMenu"> <menuitem name="Copy to next pane" action="Copy to next pane"/> <menuitem name="Copy to Home" action="Copy to Home"/> <menuitem name="Copy to Desktop" action="Copy to Desktop"/> </menu> <menu action="MoveToMenu"> <menuitem name="Move to next pane" action="Move to next pane"/> <menuitem name="Copy to Home" action="Move to Home"/> <menuitem name="Copy to Desktop" action="Move to Desktop"/> </menu> ...
Hasta ahora la parte del código expuesto representa:
Añadir la opción «Duplicar» al menú contextual
Para ello nos dirigimos al siguiente tramo del archivo caja-directory-view-ui.xml, donde se encuentran las líneas “Clipboard separator” seguida de “File Clipboard Actions”, y a continuación vienen las líneas referidas a Cut (Cortar), Copy (Copiar), Paste Files Into (Pegar) y el resto de las opciones de nuestro menú contextual.
Yo añadí la línea que hace referencia a Duplicar debajo de <placeholder name=”File Actions”> dónde están las opciones “Crear un enlace”, “Renombrar” etc. Como se puede apreciar en mí código:
... <separator name="Clipboard separator"/> <placeholder name="File Clipboard Actions"> <menuitem name="Cut" action="Cut"/> <menuitem name="Copy" action="Copy"/> <menuitem name="Paste Files Into" action="Paste Files Into"/> </placeholder> <separator name="File actions separator"/> <placeholder name="File Actions"> <!-- Aquí añado la línea "Duplicar" --> <menuitem name="Duplicate" action="Duplicate"/> <menuitem name="Create Link" action="Create Link"/> <menuitem name="Rename" action="Rename"/> <menu action="CopyToMenu"> <menuitem name="Copy to next pane" action="Copy to next pane"/> <menuitem name="Copy to Home" action="Copy to Home"/> <menuitem name="Copy to Desktop" action="Copy to Desktop"/> </menu> <menu action="MoveToMenu"> <menuitem name="Move to next pane" action="Move to next pane"/> <menuitem name="Copy to Home" action="Move to Home"/> <menuitem name="Copy to Desktop" action="Move to Desktop"/> </menu> ...
Luego de modificar el archivo debemos guardar los cambios y reiniciar Caja (Nautilus).
Desde un terminal ejecutamos:
caja -q
Y ya tenemos la opción Duplicar en nuestro menú contextual:
Cada cual puede ubicar la opción Duplicar en cualquier orden del menú, yo escogí en la sección Create Link, Rename, etc., pero puede ser cualquier lugar del menú contextual, el que que nos resulte más práctico. Incluso podemos usar separadores con la etiqueta <separator/> de esta forma:
... <separator name="File actions separator"/> <placeholder name="File Actions"> <menuitem name="Duplicate" action="Duplicate"/> <!-- Agrego línea separadora --> <separator name="Duplicate separator"/> <menuitem name="Create Link" action="Create Link"/> <menuitem name="Rename" action="Rename"/> ...
El resultado:
Además he decidido implementar algunas opciones más en mi menú contextual como:
- Seleccionar todo
- Seleccionar elementos que coincidan con…
- Invertir Selección
Aunque a decir verdad, solo la opción <menuitem name=”Select Pattern” action=”Select Pattern”/> —es decir: Seleccionar elementos que coincidan con…—, podría ser la más productiva para mi si no utilizara Ctrl+S para filtrar la selección.
Igualmente para demostrar la flexibilidad con que podemos modificar nuestros menús, a modo de ejemplo, añadí todas las líneas mencionadas, siempre en la misma sección que hace referencia al menú contextual, el orden como dije anteriormente va en cada uno de nosotros.
Estas son las líneas existentes que añadí:
<!-- línea separadora --> <separator name="Select Items separator"/> <placeholder name="Select Items"> <menuitem name="Select All" action="Select All"/> <menuitem name="Select Pattern" action="Select Pattern"/> <menuitem name="Invert Selection" action="Invert Selection"/> </placeholder>
Quedando mi código de la siguiente manera:
... <separator name="Clipboard separator"/> <placeholder name="File Clipboard Actions"> <menuitem name="Cut" action="Cut"/> <menuitem name="Copy" action="Copy"/> <menuitem name="Paste Files Into" action="Paste Files Into"/> </placeholder> <!-- Se añaden las líneas mencionadas anteriormente --> <separator name="Select Items separator"/> <placeholder name="Select Items"> <menuitem name="Select All" action="Select All"/> <menuitem name="Select Pattern" action="Select Pattern"/> <menuitem name="Invert Selection" action="Invert Selection"/> </placeholder> <separator name="File actions separator"/> <placeholder name="File Actions"> <!-- Aquí añado la línea "Duplicar" --> <menuitem name="Duplicate" action="Duplicate"/> <menuitem name="Create Link" action="Create Link"/> <menuitem name="Rename" action="Rename"/> <menu action="CopyToMenu"> <menuitem name="Copy to next pane" action="Copy to next pane"/> <menuitem name="Copy to Home" action="Copy to Home"/> <menuitem name="Copy to Desktop" action="Copy to Desktop"/> </menu> ...
El resultado final:
Conclusiones
Como se percatarán no he inventado nada, solo copié líneas de códigos que están presentes en el archivo XML que forman parte de los menús de Caja (Nautilus) y los agregué al tramo dónde se encuentran las líneas del menú contextual, no tuve la necesidad de crear nuevo código o scripts. Se puede moldear nuestro menú como deseemos, sin embargo lo más lógico es no modificarlo demasiado, —simple es mejor—.
Es muy posible que haya una manera mucho más fácil de resolver algo tan trivial como esto, no he indagado lo suficiente como para explorar otras opciones —de esta forma es como mejor aprendo—. Tal vez conozcas una manera más sencilla de hacerlo y quieras compartirla. Por lo pronto, esta puede ser una solución para los usuarios que deseen tener la opción Duplicar u otra, en el menú contextual.
La de seleccionar archivos de acuerdo a un patrón si ‘me cuadra’ un mundo, pero esa de duplicar no le veo mucha utilidad en el menú contextual, ya que la mayoría de nosotros usamos en el teclado Ctrl+X, Ctrl+C, Ctrl+V para cortar, copiar, pegar respectivamente y no el menú contextual