Blog del Podcast
podcast      GitHub      Twitter   Telegram

Joplin Desktop, Joplin para Terminal y WebClipper

Tiempo estimado de lectura: 28 minutos. 3154 palabras. joplin

Joplin junto al orgmode, se está convirtiendo en una aplicación imprescindible para mi. Me permite tener sincronizadas mis notas en todos mis dispositivos, gracias a mi servidor webdav.

Voy a explicaros la instalación de algunos de sus clientes y conocer el funcionamiento de la versión de terminal.

AppImage

Para instalar la versión de escritorio con AppImage.

En debian Buster, me da un problema al ejecurar el AppImage, ya que me dice que el sandbox no está bien configurado. Para poder arrancarlo utilizo:

./Joplin-1.0.218.AppImage --no-sandbox

Para configurar correctamente el sandbox, ejecutaremos:

sudo sysctl kernel.unprivileged_userns_clone=1

Snap

Si tienes snap en tu sistema, es tan sencillo como:

sudo snap install joplin-james-carroll

WebClipper

Por si solo, el plugin no funciona. Necesita tener abierta la versión desktop de joplin, ya que esta utiliza el puerto 41184 para enviar el contenido del navegador.

Para habilitar que WebClipper y envíe el contenido de una web a joplin desktop, tenemos que ir Herramientas/Opciones/Web Clipper y habilitar el servicio.

Después, como no, tenemos que instalar la extensión para Firefox o Google Chrome.

Si hay algún problema, siempre puedes comprobar si el servidor de joplin está corriendo por el puerto por defecto con:

curl http://127.0.0.1:41184/ping

El resultado si todo es correcto sería:

JoplinClipperServer

Control de versiones

Joplin ya permite el control de versiones de una nota. Esto quiere decir que podemos volver atrás en el tiempo, a una edición anterior. Esta opción actualmente solo está disponible en la versión desktop pulsando sobre la "i" de información de la nota o tarea.

SubLibretas

También podemos crear sublibretas. Esta opción también a día de hoy, es exclusiva en la versión desktop. EL desarrollador ya ha comunicado que en breve estará en la versión mobile.

Joplin para Terminal

Vamos a instalar la versión para utilizar Joplin desde la terminal.

Instalar una dependencia necesaria

sudo apt install libsecret-1-dev

Descarga y actualiza Node / NPM

curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash
sudo apt install -y nodejs

Instalando Joplin-cli

Podemos instalar la versión de terminal en nuestro pc con arquitectura amd64 o en nuestra Raspberry Pi con arquitectura ARM.

NPM_CONFIG_PREFIX=~/.joplin-bin npm install -g joplin

Creamos un enlace, así en la terminal, con solo escribir joplin, nos abrirá joplin-cli.

sudo ln -s ~/.joplin-bin/bin/joplin /usr/bin/joplin

Resumido en un solo comando, para que copies y pegues en la terminal:

NPM_CONFIG_PREFIX=~/.joplin-bin npm install -g joplin
sudo ln -s ~/.joplin-bin/bin/joplin /usr/bin/joplin

Ahora escribiendo joplin en tu terminal, se debería abrir.

Actualizar

Para actualizar la versión del joplin-cli:

NPM_CONFIG_PREFIX=~/.joplin-bin npm install -g joplin

Ahora cuando corras joplin-cli, ya estará actualizado

joplin version

Carpeta de configuración

Los archivos de configuración, pueden estar en la carpeta

~/.config/joplin

Carpeta donde están las imágenes

~/.config/joplin/resources

Uso

La app de terminal es muy intuitiva. Aparecerán tres grandes columnas, con las libretas, notas y contenido de estas. Utilizaremos la tecla TAB para saltar de una columna a otra.

Para introducir un comando, tendremos que escribir : seguido del comando.

También permite el autocompletado mediante TAB. De manera que si escribimos :sy y pulsamos TAB, auto escribirá :sync.

Para salir de la aplicación, lo haremos escribiendo :exit o pulsando Ctrl+d.

Algunos comandos útiles

:mknote "Título de Nota"   # Crear nota
:mn     "Título de Nota"   # Crear nota
:mktodo "Título de tarea"  # Crear tarea -> Pulsa la tecla *space*, para marcar la tarea como realizada
:mt     "Título de tarea"  # Crear tarea
:mkbook "Nombre Libreta"   # Crear una libreta
:mb     "Nombre Libreta"   # Crear una libreta
:ren $n "Nuevo nombre"     # Renombrar la nota en la que estás situado, con el nombre "Nuevo nombre"
:mv  $n "Tareas"           # Mover la nota en la que estás situado, a la libreta "Tareas"
:yn       cp $n
:dn       mv $n ""
:search                    # Buscar
:mv TAB                    # Mover una nota. Si pulsas TAB, nos aparecera todas las notas a seleccionar
:sync                      # Sincronizar con el servidor
:status                    # Ver estado. Número de notas, libretas,...
:config editor "nano"      # Cambiar editor por defecto
:help                      # Ayuda
:help all                  # Ayuda más completa
:help keymap               # Atajos
:help shortcuts

Atajos

tm        # Ver metadata de una nota
tc        # Entrar y salir al modo consola
Enter     # Encima de una nota, editarla
suprimir  # Da la opción a borrar una nota, tarea, libreta
Backspace # Da la opción a borrar una nota, tarea, libreta
/         # Buscar
TAB       # Saltar entre columnas y autoescritura
Ctrl+d    # Salir

Personalizar atajos

Crea el siguiente archivo, si no lo tienes creado

nano ~/.config/joplin/keymap.json

Añade el siguiente contenido

[
{ "keys": [":"], "type": "function", "command": "enter_command_line_mode" },
{ "keys": ["TAB"], "type": "function", "command": "focus_next" },
{ "keys": ["SHIFT_TAB"], "type": "function", "command": "focus_previous" },
{ "keys": ["UP"], "type": "function", "command": "move_up" },
{ "keys": ["DOWN"], "type": "function", "command": "move_down" },
{ "keys": ["PAGE_UP"], "type": "function", "command": "page_up" },
{ "keys": ["PAGE_DOWN"], "type": "function", "command": "page_down" },
{ "keys": ["ENTER"], "type": "function", "command": "activate" },
{ "keys": ["DELETE", "BACKSPACE"], "type": "function", "command": "delete" },
{ "keys": [" "], "command": "todo toggle $n" },
{ "keys": ["tc"], "type": "function", "command": "toggle_console" },
{ "keys": ["tm"], "type": "function", "command": "toggle_metadata" },
{ "keys": ["/"], "type": "prompt", "command": "search """, "cursorPosition": -2 },
{ "keys": ["mn"], "type": "prompt", "command": "mknote """, "cursorPosition": -2 },
{ "keys": ["mt"], "type": "prompt", "command": "mktodo """, "cursorPosition": -2 },
{ "keys": ["mb"], "type": "prompt", "command": "mkbook """, "cursorPosition": -2 },
{ "keys": ["yn"], "type": "prompt", "command": "cp $n """, "cursorPosition": -2 },
{ "keys": ["dn"], "type": "prompt", "command": "mv $n """, "cursorPosition": -2 }
]

Sustituye o personaliza a tu gusto

Configuración para Webdav, Nexcloud, OwnCloud

Nubes disponibles: 2: File system 3: OneDrive 5: Nextcloud 6: WebDAV 7: Dropbox

Yo en mi caso, utilizaré mi servidor webdav, así que utilizaré el número 6.

:config sync.target 6
:config sync.6.path https://mi-url/joplin
:config sync.6.username USUARIO
:config sync.6.password CONTRASEÑA

Iniciar la Sincronizar

:sync

Cifrado extremo a extremo

Poner la contraseña

:e2ee decrypt

Introduzca la contraseña maestra:

Cambiar el editor

Cambiar el editor a emacs por defecto a:

:config editor "emacs -nw"

Alias

Como a veces se me olvida el sincronizar cada vez que he modificado una nota, he creado el siguiente alias con 2 comandos:

Voy a utilizar la letra j para lanzar Joplin de terminal.

alias j='/usr/bin/joplin ; /usr/bin/joplin sync'

Joplin modo shell

Los comandos son los mismos que la versión terminal, solo que el comando se ejecuta y nos devuelve el resultado. Voy a resumir algunos de los comandos:

Varios

joplin config editor                    # Muestra el editor que estamos utilizando
joplin config editor "gedit"            # Utilizar gedit como editor
joplin config dateFormat DD-MM-YYYY     # Cambiar formato de fecha
joplin mknote "nueva tarea"             # Crear la tarea llamada "nueva tarea"
joplin edit "nueva tarea"               # Editar la tarea
joplin cat "nueva tarea"                # Mostrar en terminal el contenido de la tarea
joplin cat -v "nueva tarea"             # Mostrar contenido y metadata de la tarea
joplin mkbook tareas                    # Crea la libreta tareas
joplin ls /                             # Listar libretas desde la raíz
joplin tag list                         # Listar etiquetas
joplin tag list "linux"                 # Listar notas con la etiqueta linux
joplin set fd297 titulo "nuevo titulo"  # Cambiar título de una nota
joplin use tareas                       # Situate dentro de la libreta tareas
joplin sync                             # Sincronizar todas las tareas
joplin import linux.md linux            # Importa un documento .md llamado linux en joplin con el título linux
joplin version                          # Versión de joplin

joplin export --note <node-id> --format md <output-dir>

Listar

Listar la raíz de tu Joplin

joplin ls /

Listar la raíz de tu Joplin con los id

joplin ls / -l

Listar y mostrar los id de las notas:

joplin ls -l

Cambiar de libreta

joplin use "nombre de libreta"

Ahora podemos listar las notas o tareas de esa libreta:

joplin ls

Editar Nota o Tarea

Editar nota con id 073ac

joplin edit 073ac

Ver nota

joplin cat "nombre nota"
joplin cat id

Marcar tarea como realizada o no realizada

done "nombre tarea"
undone "nombre tarea"

Exportar una nota

Listamos las notas en la ubicación que estamos

joplin ls -l

Con cat seguido del nombre de la nota/tarea o el id, exportamos su contenido a el archivo llamado nota.md.

joplin cat id > nota.md

Ayuda

Ayuda simple

joplin help

Ayuda completa

joplin help all

Muestra de ayuda con todos los comandos

attach <note> <file>

Adjuntar archivo a la nota.

cat <note>

Mostrar la nota dada.

-v, --verbose  Mostrar la información completa acerca de la nota.

config [name] [value]

Obtener o configurar un valor. Si no se provee el [valor], se mostrará el
valor de [nombre]. Si no se provee [nombre] ni [valor], se listará la
configuración actual.

-v, --verbose         También muestra variables ocultas o no configuradas.
--export              Writes all settings to STDOUT as JSON including
secure variables.
--import              Reads in JSON formatted settings from STDIN.
--import-file <file>  Reads in settings from <file>. <file> must contain
valid JSON.

Claves/valores posbiles:

sync.target                    Destino de sincronización.
El destino de la sincronización. Cada
destino de la sincronización puede tener
parámetros adicionales los cuales son
llamados como `sync.NUM.NAME` (todos abajo
documentados).
Tipo: Enumeración.
Posibles valores: 2 (File system), 3
(OneDrive), 5 (Nextcloud), 6 (WebDAV), 7
(Dropbox).
Por defecto: 7

sync.2.path                    Directorio con el que sincronizarse (ruta
completa).
Attention: If you change this location,
make sure you copy all your content to it
before syncing, otherwise all files will be
removed! See the FAQ for more details:
https://joplinapp.org/faq/
Tipo: string.

sync.5.path                    Servidor WebDAV de Nextcloud.
Attention: If you change this location,
make sure you copy all your content to it
before syncing, otherwise all files will be
removed! See the FAQ for more details:
https://joplinapp.org/faq/
Tipo: string.

sync.5.username                Usuario de Nextcloud.
Tipo: string.

sync.5.password                Contraseña de Nextcloud.
Tipo: string.

sync.6.path                    Servidor WebDAV.
Attention: If you change this location,
make sure you copy all your content to it
before syncing, otherwise all files will be
removed! See the FAQ for more details:
https://joplinapp.org/faq/
Tipo: string.

sync.6.username                Usuario de WebDAV.
Tipo: string.

sync.6.password                Contraseña de WebDAV.
Tipo: string.

sync.maxConcurrentConnections  Conexiones simultáneas máximas.
Tipo: int.
Por defecto: 5

locale                         Idioma.
Tipo: Enumeración.
Posibles valores: ar (Arabic (87%)), eu
(Basque (37%)), bs_BA (Bosnian (81%)),
bg_BG (Bulgarian (73%)), ca (Catalan
(58%)), hr_HR (Croatian (31%)), cs_CZ
(Czech (90%)), da_DK (Dansk (81%)), de_DE
(Deutsch (97%)), et_EE (Eesti Keel (72%)),
en_GB (English (UK) (100%)), en_US (English
(US) (100%)), es_ES (Español (90%)), eo
(Esperanto (41%)), fr_FR (Français (91%)),
gl_ES (Galician (47%)), it_IT (Italiano
(96%)), nl_BE (Nederlands (37%)), nl_NL
(Nederlands (92%)), nb_NO (Norwegian
(97%)), fa (Persian (36%)), pl_PL (Polski
(84%)), pt_PT (Português (98%)), pt_BR
(Português (Brasil) (98%)), ro (Română
(37%)), sl_SI (Slovenian (47%)), sv
(Svenska (78%)), th_TH (Thai (58%)), vi
(Tiếng Việt (94%)), tr_TR (Türkçe (100%)),
el_GR (Ελληνικά (89%)), ru_RU (Русский
(97%)), sr_RS (српски језик (78%)), zh_CN
(中文 (简体) (97%)), zh_TW (中文 (繁體) (98%)),
ja_JP (日本語 (100%)), ko (한국어 (95%)).
Por defecto: "en_GB"

dateFormat                     Formato de fecha.
Tipo: Enumeración.
Posibles valores: DD/MM/YYYY (30/01/2017),
DD/MM/YY (30/01/17), MM/DD/YYYY
(01/30/2017), MM/DD/YY (01/30/17),
YYYY-MM-DD (2017-01-30), DD.MM.YYYY
(30.01.2017), YYYY.MM.DD (2017.01.30).
Por defecto: "DD/MM/YYYY"

timeFormat                     Formato de hora.
Tipo: Enumeración.
Posibles valores: HH:mm (20:30), h:mm A
(8:30 PM).
Por defecto: "HH:mm"

uncompletedTodosOnTop          Mostrar tareas incompletas al inicio de las
listas.
Tipo: bool.
Por defecto: true

showCompletedTodos             Mostrar tareas completadas.
Tipo: bool.
Por defecto: true

notes.sortOrder.field          Ordenar notas por.
Tipo: Enumeración.
Posibles valores: user_updated_time (Fecha
de actualización), user_created_time (Fecha
de creación), title (Título).
Por defecto: "user_updated_time"

notes.sortOrder.reverse        Invierte el orden.
Tipo: bool.
Por defecto: true

folders.sortOrder.field        Ordenar libretas por.
Tipo: Enumeración.
Posibles valores: title (Título),
last_note_user_updated_time (Fecha de
actualización).
Por defecto: "title"

folders.sortOrder.reverse      Invierte el orden.
Tipo: bool.
Por defecto: false

trackLocation                  Guardar geolocalización en las notas.
Tipo: bool.
Por defecto: true

sync.interval                  Intervalo de sincronización.
Tipo: Enumeración.
Posibles valores: 0 (Deshabilitado), 300 (5
minutos), 600 (10 minutos), 1800 (30
minutos), 3600 (1 hora), 43200 (12 horas),
86400 (24 horas).
Por defecto: 300

editor                         Editor de texto.
El comando del editor (puede incluir
argumentos) que se utilizará para abrir una
nota. Si no se provee ninguno se intentará
auto detectar el editor por defecto.
Tipo: string.

net.customCertificates         Certificados TLS personalizados.
Lista de rutas de los directorios de dónde
cargar los certificados separados por
comas, o la ruta individual de los
certificados. Por ejemplo: /mi/cert_dir,
/otro/personalizado.pem. Tenga en cuenta
que si realiza cambios en la configuración
de los certificados debe guardar los
cambios antes de pulsar en «Comprobar la
configuración de sincronización».
Tipo: string.

net.ignoreTlsErrors            Ignorar errores en certificados TLS.
Tipo: bool.
Por defecto: false

sync.wipeOutFailSafe           Fail-safe.
A prueba de fallos: No borre los datos
locales cuando el objetivo de
sincronización esté vacío (a menudo como
resultado de una configuración errónea o de
un error).
Tipo: bool.
Por defecto: true


revisionService.enabled        Habilitar historial de notas.
Tipo: bool.
Por defecto: true

revisionService.ttlDays        Mantener historial de la nota durante.
Tipo: int.
Por defecto: 90

layout.folderList.factor       Notebook list growth factor.
The factor property sets how the item will
grow or shrink to fit the available space
in its container with respect to the other
items. Thus an item with a factor of 2 will
take twice as much space as an item with a
factor of 1.Restart app to see changes.
Tipo: int.
Por defecto: 1

layout.noteList.factor         Note list growth factor.
The factor property sets how the item will
grow or shrink to fit the available space
in its container with respect to the other
items. Thus an item with a factor of 2 will
take twice as much space as an item with a
factor of 1.Restart app to see changes.
Tipo: int.
Por defecto: 1

layout.note.factor             Note area growth factor.
The factor property sets how the item will
grow or shrink to fit the available space
in its container with respect to the other
items. Thus an item with a factor of 2 will
take twice as much space as an item with a
factor of 1.Restart app to see changes.
Tipo: int.
Por defecto: 2

cp <note> [notebook]

Duplica las notas que coincidan con <note> en la libreta. Si no se
especifica una libreta la nota se duplica en la libreta actual.

done <note>

Marca una tarea como hecha.

e2ee <command> [path]

Gestiona la configuración E2EE. Los comandos disponibles son: `enable`,
`disable`, `decrypt`, `status`, `decrypt-file` y `target-status`.

-p, --password <password>  Use this password as master password (For
security reasons, it is not recommended to use
this option).
-v, --verbose              More verbose output for the `target-status`
command
-o, --output <directory>   Output directory
--retry-failed-items       Applies to `decrypt` command - retries
decrypting items that previously could not be
decrypted.

edit <note>

Editar una nota.

export <path>

Exporta datos de Joplin al directorio indicado. Por defecto, se exportará
la base de datos completa incluyendo libretas, notas, etiquetas y
recursos.

--format <format>      Formato de destino: jex (Archivo de exportación de
Joplin), raw (Directorio para exportar de Joplin),
json (Directorio para exportar JSON), md
(Markdown), html (Archivo HTML), html (Directorio
HTML)
--note <note>          Exporta únicamente la nota indicada.
--notebook <notebook>  Exporta únicamente la libreta indicada.

geoloc <note>

Muestra la URL de la geolocalización de la nota.

help [command]

Muestra información de uso.

import <path> [notebook]

Importa los datos en Joplin.

--format <format>  Formato de origen: auto, jex, md, raw, enex, enex
-f, --force        No requiere confirmación.

ls [note-pattern]

Muestra las notas en la libreta actual. Usa `ls /` para mostrar la lista
de libretas.

-n, --limit <num>      Muestra las primeras <num> notas.
-s, --sort <field>     Ordena los elementos por campo ( ej. title,
updated_time, created_time).
-r, --reverse          Invierte el orden.
-t, --type <type>      Muestra únicamente los elementos de los tipos
especificados. Pueden ser `n` para notas, `t` para
tareas, o `nt` para libretas y tareas (ej. `-tt`
mostrará unicamente las tareas, mientras `-ttd`
mostrará notas y tareas).
-f, --format <format>  Puede ser «text» o «json»
-l, --long             Usar formato largo de lista. El formato es ID,
NOTE_COUNT ( para libretas), DATE,TODO_CHECKED (
para tareas), TITLE

mkbook <new-notebook>

Crea una nueva libreta.

mknote <new-note>

Crea una nueva nota.

mktodo <new-todo>

Crea una nueva lista de tareas.

mv <note> [notebook]

Mueve las notas que coincidan con <note> a la [libreta].

ren <item> <name>

Renombra el elemento dado <item> (nota o libreta) a <name>.

rmbook <notebook>

Elimina la libreta dada.

-f, --force  Elimina una libreta sin pedir confirmación.

rmnote <note-pattern>

Elimina las notas que coinciden con <note-pattern>.

-f, --force  Elimina las notas sin pedir confirmación.

server <command>

Inicie, pare o compruebe el servidor API. Para especificar el puerto que
debe ejecutarse use api.port como variable en la configuración. Los
comandos son (start|stop|status). This is an experimental feature - use at
your own risks! It is recommended that the server runs off its own
separate profile so that no two CLI instances access that profile at the
same time. Use --profile to specify the profile path.

set <note> <name> [value]

Asigna el valor [value] a la propiedad <name> de la nota indicada <note>.
Propiedades disponibles:

parent_id (text), title (text), body (text), created_time (int),
updated_time (int), is_conflict (int), latitude (numeric), longitude
(numeric), altitude (numeric), author (text), source_url (text), is_todo
(int), todo_due (int), todo_completed (int), source (text),
source_application (text), application_data (text), order (int),
user_created_time (int), user_updated_time (int), encryption_cipher_text
(text), encryption_applied (int), markup_language (int), is_shared (int)

status

Muestra un resumen acerca de las notas y las libretas.

sync

Sincroniza con el almacenamiento remoto.

--target <target>  Sincroniza con el destino indicado (por defecto al
valor de configuración sync.target)

tag <tag-command> [tag] [note]

<tag-command> puede ser «add», «remove», «list», o «notetags» para asignar
o eliminar [etiqueta] de [nota], o para listar las notas asociadas con
[etiqueta], o para listar las etiquetas asociadas con [nota]. El comando
`tag list` puede ser usado para listar todas las etiquetas (usa -l para la
opción larga).

-l, --long  Usar formato largo de lista. El formato es ID, NOTE_COUNT (
para libretas), DATE,TODO_CHECKED ( para tareas), TITLE

todo <todo-command> <note-pattern>

<todo-command> puede ser «toggle» o «clear». Usa «toggle» para cambiar la
tarea dada entre estado completado y sin completar. (Si el objetivo es una
nota regular se convertirá en una tarea). Usa «clear» para convertir la
tarea a una nota regular.

undone <note>

Marca una tarea como no completada.

use <notebook>

Cambia una [libreta] - todas las demás operaciones se realizan en ésta
libreta.

version

Muestra información de la versión

Fuentes

Fuentes

notas Instalando Node

En la versión anterior de joplin para cli, teniamos suficiente instalando nodejs y npm desde repositorios, ahora es necesario actualizar para solucionar el problema.

sudo apt update
sudo apt install nodejs

Ahora npm

sudo apt install npm

Publicado por Angel el Saturday 13 June del 2020 y actualizado el Tuesday 17 August del 2021



También te puede interesar:




Powered by org-bash-blog

Written in OrgMode with Emacs and converted to HTML with Pandoc

Licencia de Creative Commons
Este obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional.