mirror of
https://github.com/laurent22/joplin.git
synced 2024-12-24 10:27:10 +02:00
Website
This commit is contained in:
parent
9248a03e8b
commit
df1a063a52
3
CliClient/.gitignore
vendored
3
CliClient/.gitignore
vendored
@ -15,4 +15,5 @@ tests/logs/*
|
|||||||
tests/cli-integration/
|
tests/cli-integration/
|
||||||
*.mo
|
*.mo
|
||||||
*.*~
|
*.*~
|
||||||
tests/sync
|
tests/sync
|
||||||
|
out.txt
|
172
CliClient/app/build-website.js
Normal file
172
CliClient/app/build-website.js
Normal file
@ -0,0 +1,172 @@
|
|||||||
|
require('source-map-support').install();
|
||||||
|
require('babel-plugin-transform-runtime');
|
||||||
|
|
||||||
|
import fs from 'fs-extra';
|
||||||
|
import { fileExtension, basename, dirname } from 'lib/path-utils.js';
|
||||||
|
import { _, setLocale, languageCode } from 'lib/locale.js';
|
||||||
|
import marked from 'lib/marked.js';
|
||||||
|
|
||||||
|
const headerHtml = `
|
||||||
|
<!doctype html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
|
||||||
|
<style>
|
||||||
|
body {
|
||||||
|
background-color: #F1F1F1;
|
||||||
|
color: #333333;
|
||||||
|
}
|
||||||
|
.title-icon {
|
||||||
|
height: 2em;
|
||||||
|
}
|
||||||
|
.sub-title {
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 1.5em;
|
||||||
|
}
|
||||||
|
.container {
|
||||||
|
background-color: white;
|
||||||
|
padding: 0;
|
||||||
|
box-shadow: 0 10px 20px #888888;
|
||||||
|
}
|
||||||
|
table.screenshots {
|
||||||
|
margin-top: 2em;
|
||||||
|
margin-bottom: 2em;
|
||||||
|
}
|
||||||
|
table.screenshots th {
|
||||||
|
height: 3em;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
table.screenshots th,
|
||||||
|
table.screenshots td {
|
||||||
|
border: 1px solid #C2C2C2;
|
||||||
|
}
|
||||||
|
.mobile-screenshot {
|
||||||
|
height: 40em;
|
||||||
|
padding: 1em;
|
||||||
|
}
|
||||||
|
.cli-screenshot-wrapper {
|
||||||
|
background-color: black;
|
||||||
|
vertical-align: top;
|
||||||
|
padding: 1em 2em 1em 1em;
|
||||||
|
}
|
||||||
|
.cli-screenshot {
|
||||||
|
font-family: "Monaco", "Inconsolata", "CONSOLAS", "Deja Vu Sans Mono", "Droid Sans Mono", "Andale Mono", monospace;
|
||||||
|
background-color: black;
|
||||||
|
color: white;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
.cli-screenshot .prompt {
|
||||||
|
color: #48C2F0;
|
||||||
|
}
|
||||||
|
h1 {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
.header {
|
||||||
|
position: relative;
|
||||||
|
padding-left: 2em;
|
||||||
|
padding-right: 2em;
|
||||||
|
padding-top: 1em;
|
||||||
|
padding-bottom: 1em;
|
||||||
|
color: white;
|
||||||
|
background-color: #2B2B3D;
|
||||||
|
}
|
||||||
|
.content {
|
||||||
|
padding-left: 2em;
|
||||||
|
padding-right: 2em;
|
||||||
|
padding-bottom: 2em;
|
||||||
|
}
|
||||||
|
.forkme {
|
||||||
|
position: absolute;
|
||||||
|
right: 0;
|
||||||
|
top:0;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<div class="container">
|
||||||
|
|
||||||
|
<div class="header">
|
||||||
|
<a class="forkme" href="https://github.com/laurent22/joplin"><img src="images/ForkMe.png"/></a>
|
||||||
|
<h1 id="joplin"><img class="title-icon" src="images/Icon512.png">oplin</h1>
|
||||||
|
<p class="sub-title">A free, open source, note taking and todo application with synchronisation capabilities.</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="content">
|
||||||
|
`;
|
||||||
|
|
||||||
|
const footerHtml = `
|
||||||
|
<hr/>Copyright (c) 2017 Laurent Cozic
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
`;
|
||||||
|
|
||||||
|
const screenshotHtml = `
|
||||||
|
<table class="screenshots">
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
Mobile
|
||||||
|
</th>
|
||||||
|
<th>
|
||||||
|
Command line
|
||||||
|
</th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<img class="mobile-screenshot" src="images/Mobile.png"/>
|
||||||
|
</td>
|
||||||
|
<td class="cli-screenshot-wrapper">
|
||||||
|
<pre class="cli-screenshot">
|
||||||
|
<span class="prompt">joplin:/My notebook$</span> ls -n 12
|
||||||
|
[ ] 8am conference call ☎
|
||||||
|
[ ] Make vet appointment
|
||||||
|
[ ] Go pick up parcel
|
||||||
|
[ ] Pay flat rent 💸
|
||||||
|
[X] Book ferry 🚢
|
||||||
|
[X] Deploy Joplin app
|
||||||
|
Open source stuff
|
||||||
|
Swimming pool time table 🏊
|
||||||
|
Grocery shopping list 📝
|
||||||
|
Work itinerary
|
||||||
|
Tuesday random note
|
||||||
|
Vacation plans ☀️
|
||||||
|
</pre>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
`;
|
||||||
|
|
||||||
|
const rootDir = dirname(dirname(__dirname));
|
||||||
|
const docDir = rootDir + '/docs';
|
||||||
|
|
||||||
|
function markdownToHtml(md) {
|
||||||
|
const renderer = new marked.Renderer();
|
||||||
|
|
||||||
|
// Remove the header because it's going to be added back as HTML
|
||||||
|
md = md.replace(/# Joplin/, '');
|
||||||
|
|
||||||
|
let output = marked(md, {
|
||||||
|
gfm: true,
|
||||||
|
break: true,
|
||||||
|
renderer: renderer,
|
||||||
|
});
|
||||||
|
|
||||||
|
output = output.replace(/<!-- \[SCREENSHOTS\] -->/, screenshotHtml);
|
||||||
|
|
||||||
|
return headerHtml + output + footerHtml;
|
||||||
|
}
|
||||||
|
|
||||||
|
async function main() {
|
||||||
|
const md = fs.readFileSync(rootDir + '/README.md', 'utf8');
|
||||||
|
const html = markdownToHtml(md);
|
||||||
|
|
||||||
|
fs.writeFileSync(docDir + '/index.html', html);
|
||||||
|
}
|
||||||
|
|
||||||
|
main().catch((error) => {
|
||||||
|
console.error(error);
|
||||||
|
});
|
@ -3,6 +3,7 @@ import { app } from './app.js';
|
|||||||
import { _ } from 'lib/locale.js';
|
import { _ } from 'lib/locale.js';
|
||||||
import { BaseModel } from 'lib/base-model.js';
|
import { BaseModel } from 'lib/base-model.js';
|
||||||
import { Folder } from 'lib/models/folder.js';
|
import { Folder } from 'lib/models/folder.js';
|
||||||
|
import { Setting } from 'lib/models/setting.js';
|
||||||
import { Note } from 'lib/models/note.js';
|
import { Note } from 'lib/models/note.js';
|
||||||
import { autocompleteFolders } from './autocomplete.js';
|
import { autocompleteFolders } from './autocomplete.js';
|
||||||
import { sprintf } from 'sprintf-js';
|
import { sprintf } from 'sprintf-js';
|
||||||
@ -53,6 +54,7 @@ class Command extends BaseCommand {
|
|||||||
if (options.type.indexOf('t') >= 0) queryOptions.itemTypes.push('todo');
|
if (options.type.indexOf('t') >= 0) queryOptions.itemTypes.push('todo');
|
||||||
}
|
}
|
||||||
if (pattern) queryOptions.titlePattern = pattern;
|
if (pattern) queryOptions.titlePattern = pattern;
|
||||||
|
queryOptions.uncompletedTodosOnTop = Setting.value('uncompletedTodosOnTop');
|
||||||
|
|
||||||
let modelType = null;
|
let modelType = null;
|
||||||
if (pattern == '/' || !app().currentFolder()) {
|
if (pattern == '/' || !app().currentFolder()) {
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
"url": "https://github.com/laurent22/joplin"
|
"url": "https://github.com/laurent22/joplin"
|
||||||
},
|
},
|
||||||
"url": "git://github.com/laurent22/joplin.git",
|
"url": "git://github.com/laurent22/joplin.git",
|
||||||
"version": "0.8.70",
|
"version": "0.9.0",
|
||||||
"bin": {
|
"bin": {
|
||||||
"joplin": "./main_launcher.js"
|
"joplin": "./main_launcher.js"
|
||||||
},
|
},
|
||||||
|
@ -5,5 +5,6 @@ SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|||||||
npm version patch
|
npm version patch
|
||||||
bash $SCRIPT_DIR/build.sh
|
bash $SCRIPT_DIR/build.sh
|
||||||
cp "$SCRIPT_DIR/package.json" build/
|
cp "$SCRIPT_DIR/package.json" build/
|
||||||
|
cp "$SCRIPT_DIR/../README.md" build/
|
||||||
cd "$SCRIPT_DIR/build"
|
cd "$SCRIPT_DIR/build"
|
||||||
npm publish
|
npm publish
|
76
README.md
76
README.md
@ -1,18 +1,26 @@
|
|||||||
# Joplin (BETA)
|
# Joplin
|
||||||
|
|
||||||
Joplin is a note taking and todo application, which can handle a large number of notes organised into notebooks. The notes are searchable, can be copied, tagged and modified with your own text editor. The Android application supports markdown rendering.
|
<!-- [SCREENSHOTS] -->
|
||||||
|
|
||||||
|
Joplin is a free, open source note taking and todo application, which can handle a large number of notes organised into notebooks. The notes are searchable, can be copied, tagged and modified with your own text editor. The Android application supports markdown rendering.
|
||||||
|
|
||||||
The notes can be synchronised with various targets including the file system (for example with a network directory) or with Microsoft OneDrive. When synchronising the notes, notebooks, tags and other metadata are saved to plain text files which can be easily inspected, backed up and moved around.
|
The notes can be synchronised with various targets including the file system (for example with a network directory) or with Microsoft OneDrive. When synchronising the notes, notebooks, tags and other metadata are saved to plain text files which can be easily inspected, backed up and moved around.
|
||||||
|
|
||||||
Notes exported from Evenotes via .enex files can be imported into Joplin, including the formatted content (which is converted to markdown), resources (images, attachments, etc.) and complete metadata (geolocation, updated time, created time, etc.).
|
Notes exported from Evenotes via .enex files can be imported into Joplin, including the formatted content (which is converted to markdown), resources (images, attachments, etc.) and complete metadata (geolocation, updated time, created time, etc.).
|
||||||
|
|
||||||
|
The current release has been heavily tested so it should be stable enough for every day use. Some features however are missing such as the ability to attach resources to notes and (in the mobile app) to tag notes. For the full list of current and planned features see the Features and Roadmap sections below.
|
||||||
|
|
||||||
# Install
|
# Install
|
||||||
|
|
||||||
An Android app and a command line interface are currently available:
|
An Android app and a command line interface are currently available. Both can synchronise with each others.
|
||||||
|
|
||||||
<a href='https://play.google.com/store/apps/details?id=net.cozic.joplin&utm_source=GitHub&utm_campaign=README&pcampaignid=MKT-Other-global-all-co-prtnr-py-PartBadge-Mar2515-1'><img alt='Get it on Google Play' src='https://play.google.com/intl/en_us/badges/images/generic/en_badge_web_generic.png'/></a>
|
## Android
|
||||||
|
|
||||||
TODO
|
<a href='https://play.google.com/store/apps/details?id=net.cozic.joplin&utm_source=GitHub&utm_campaign=README&pcampaignid=MKT-Other-global-all-co-prtnr-py-PartBadge-Mar2515-1'><img alt='Get it on Google Play' height="100px" src='https://play.google.com/intl/en_us/badges/images/generic/en_badge_web_generic.png'/></a>
|
||||||
|
|
||||||
|
## Command line
|
||||||
|
|
||||||
|
npm install joplin
|
||||||
|
|
||||||
# Features
|
# Features
|
||||||
|
|
||||||
@ -52,6 +60,18 @@ The applications are currently available in English and French. If you would lik
|
|||||||
|
|
||||||
# Command line usage
|
# Command line usage
|
||||||
|
|
||||||
|
Joplin can work either as an interactive CLI application or, if a command is provided to the executable, as a one-off command.
|
||||||
|
|
||||||
|
For example, this would start the CLI application, from where commands can be ran interactively.
|
||||||
|
|
||||||
|
joplin
|
||||||
|
|
||||||
|
While this would create a new note and exit:
|
||||||
|
|
||||||
|
joplin mknote "my new note"
|
||||||
|
|
||||||
|
## Full commands:
|
||||||
|
|
||||||
cat <title>
|
cat <title>
|
||||||
|
|
||||||
Displays the given note.
|
Displays the given note.
|
||||||
@ -60,15 +80,15 @@ The applications are currently available in English and French. If you would lik
|
|||||||
|
|
||||||
config [name] [value]
|
config [name] [value]
|
||||||
|
|
||||||
Gets or sets a config value. If [value] is not provided, it will show
|
Gets or sets a config value. If [value] is not provided, it will show
|
||||||
the value of [name]. If neither [name] nor [value] is provided, it
|
the value of [name]. If neither [name] nor [value] is provided, it
|
||||||
will list the current configuration.
|
will list the current configuration.
|
||||||
|
|
||||||
-v, --verbose Also displays hidden config variables.
|
-v, --verbose Also displays hidden config variables.
|
||||||
|
|
||||||
cp <pattern> [notebook]
|
cp <pattern> [notebook]
|
||||||
|
|
||||||
Duplicates the notes matching <pattern> to [notebook]. If no notebook
|
Duplicates the notes matching <pattern> to [notebook]. If no notebook
|
||||||
is specified the note is duplicated in the current notebook.
|
is specified the note is duplicated in the current notebook.
|
||||||
|
|
||||||
edit <title>
|
edit <title>
|
||||||
@ -88,21 +108,21 @@ The applications are currently available in English and French. If you would lik
|
|||||||
|
|
||||||
ls [pattern]
|
ls [pattern]
|
||||||
|
|
||||||
Displays the notes in [notebook]. Use `ls /` to display the list of
|
Displays the notes in [notebook]. Use `ls /` to display the list of
|
||||||
notebooks.
|
notebooks.
|
||||||
|
|
||||||
-n, --limit <num> Displays only the first top <num> notes.
|
-n, --limit <num> Displays only the first top <num> notes.
|
||||||
-s, --sort <field> Sorts the item by <field> (eg. title,
|
-s, --sort <field> Sorts the item by <field> (eg. title,
|
||||||
updated_time, created_time).
|
updated_time, created_time).
|
||||||
-r, --reverse Reverses the sorting order.
|
-r, --reverse Reverses the sorting order.
|
||||||
-t, --type <type> Displays only the items of the specific
|
-t, --type <type> Displays only the items of the specific
|
||||||
type(s). Can be `n` for notes, `t` for todos,
|
type(s). Can be `n` for notes, `t` for todos,
|
||||||
or `nt` for notes and todos (eg. `-tt` would
|
or `nt` for notes and todos (eg. `-tt` would
|
||||||
display only the todos, while `-ttd` would
|
display only the todos, while `-ttd` would
|
||||||
display notes and todos.
|
display notes and todos.
|
||||||
-f, --format <format> Either "text" or "json"
|
-f, --format <format> Either "text" or "json"
|
||||||
-l, --long Use long list format. Format is ID, NOTE_COUNT
|
-l, --long Use long list format. Format is ID, NOTE_COUNT
|
||||||
(for notebook), DATE, TODO_CHECKED (for todos),
|
(for notebook), DATE, TODO_CHECKED (for todos),
|
||||||
TITLE
|
TITLE
|
||||||
|
|
||||||
mkbook <notebook>
|
mkbook <notebook>
|
||||||
@ -113,10 +133,14 @@ The applications are currently available in English and French. If you would lik
|
|||||||
|
|
||||||
Creates a new note.
|
Creates a new note.
|
||||||
|
|
||||||
|
mktodo <note>
|
||||||
|
|
||||||
|
Creates a new todo.
|
||||||
|
|
||||||
mv <pattern> <destination>
|
mv <pattern> <destination>
|
||||||
|
|
||||||
Moves the notes matching <pattern> to <destination>. If <pattern> is a
|
Moves the notes matching <pattern> to <destination>. If <pattern> is a
|
||||||
note, it will be moved to the notebook <destination>. If <pattern> is
|
note, it will be moved to the notebook <destination>. If <pattern> is
|
||||||
a notebook, it will be renamed to <destination>.
|
a notebook, it will be renamed to <destination>.
|
||||||
|
|
||||||
rm <pattern>
|
rm <pattern>
|
||||||
@ -142,31 +166,31 @@ The applications are currently available in English and French. If you would lik
|
|||||||
|
|
||||||
Synchronises with remote storage.
|
Synchronises with remote storage.
|
||||||
|
|
||||||
--target <target> Sync to provided target (defaults to sync.target
|
--target <target> Sync to provided target (defaults to sync.target
|
||||||
config value)
|
config value)
|
||||||
--random-failures For debugging purposes. Do not use.
|
--random-failures For debugging purposes. Do not use.
|
||||||
|
|
||||||
tag <command> [tag] [note]
|
tag <command> [tag] [note]
|
||||||
|
|
||||||
<command> can be "add", "remove" or "list" to assign or remove [tag]
|
<command> can be "add", "remove" or "list" to assign or remove [tag]
|
||||||
from [note], or to list the notes associated with [tag]. The command
|
from [note], or to list the notes associated with [tag]. The command
|
||||||
`tag list` can be used to list all the tags.
|
`tag list` can be used to list all the tags.
|
||||||
|
|
||||||
todo <action> <pattern>
|
todo <action> <pattern>
|
||||||
|
|
||||||
<action> can either be "toggle" or "clear". Use "toggle" to toggle the
|
<action> can either be "toggle" or "clear". Use "toggle" to toggle the
|
||||||
given todo between completed and uncompleted state (If the target is a
|
given todo between completed and uncompleted state (If the target is a
|
||||||
regular note it will be converted to a todo). Use "clear" to convert
|
regular note it will be converted to a todo). Use "clear" to convert
|
||||||
the todo back to a regular note.
|
the todo back to a regular note.
|
||||||
|
|
||||||
toggle <pattern>
|
toggle <pattern>
|
||||||
|
|
||||||
Toggles the given todo between completed and uncompleted. If the
|
Toggles the given todo between completed and uncompleted. If the
|
||||||
target is not a single note it will be converted to a todo.
|
target is not a single note it will be converted to a todo.
|
||||||
|
|
||||||
use <notebook>
|
use <notebook>
|
||||||
|
|
||||||
Switches to [notebook] - all further operations will happen within
|
Switches to [notebook] - all further operations will happen within
|
||||||
this notebook.
|
this notebook.
|
||||||
|
|
||||||
version
|
version
|
||||||
|
@ -90,8 +90,8 @@ android {
|
|||||||
applicationId "net.cozic.joplin"
|
applicationId "net.cozic.joplin"
|
||||||
minSdkVersion 16
|
minSdkVersion 16
|
||||||
targetSdkVersion 22
|
targetSdkVersion 22
|
||||||
versionCode 37
|
versionCode 38
|
||||||
versionName "0.9.24"
|
versionName "0.9.25"
|
||||||
ndk {
|
ndk {
|
||||||
abiFilters "armeabi-v7a", "x86"
|
abiFilters "armeabi-v7a", "x86"
|
||||||
}
|
}
|
||||||
|
BIN
docs/images/ForkMe.png
Normal file
BIN
docs/images/ForkMe.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 7.6 KiB |
BIN
docs/images/Icon512.png
Normal file
BIN
docs/images/Icon512.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 28 KiB |
BIN
docs/images/Mobile.png
Normal file
BIN
docs/images/Mobile.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 84 KiB |
305
docs/index.html
Normal file
305
docs/index.html
Normal file
@ -0,0 +1,305 @@
|
|||||||
|
|
||||||
|
<!doctype html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
|
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
|
||||||
|
<style>
|
||||||
|
body {
|
||||||
|
background-color: #F1F1F1;
|
||||||
|
color: #333333;
|
||||||
|
}
|
||||||
|
.title-icon {
|
||||||
|
height: 2em;
|
||||||
|
}
|
||||||
|
.sub-title {
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 1.5em;
|
||||||
|
}
|
||||||
|
.container {
|
||||||
|
background-color: white;
|
||||||
|
padding: 0;
|
||||||
|
box-shadow: 0 10px 20px #888888;
|
||||||
|
}
|
||||||
|
table.screenshots {
|
||||||
|
margin-top: 2em;
|
||||||
|
margin-bottom: 2em;
|
||||||
|
}
|
||||||
|
table.screenshots th {
|
||||||
|
height: 3em;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
table.screenshots th,
|
||||||
|
table.screenshots td {
|
||||||
|
border: 1px solid #C2C2C2;
|
||||||
|
}
|
||||||
|
.mobile-screenshot {
|
||||||
|
height: 40em;
|
||||||
|
padding: 1em;
|
||||||
|
}
|
||||||
|
.cli-screenshot-wrapper {
|
||||||
|
background-color: black;
|
||||||
|
vertical-align: top;
|
||||||
|
padding: 1em 2em 1em 1em;
|
||||||
|
}
|
||||||
|
.cli-screenshot {
|
||||||
|
font-family: "Monaco", "Inconsolata", "CONSOLAS", "Deja Vu Sans Mono", "Droid Sans Mono", "Andale Mono", monospace;
|
||||||
|
background-color: black;
|
||||||
|
color: white;
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
.cli-screenshot .prompt {
|
||||||
|
color: #48C2F0;
|
||||||
|
}
|
||||||
|
h1 {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
.header {
|
||||||
|
position: relative;
|
||||||
|
padding-left: 2em;
|
||||||
|
padding-right: 2em;
|
||||||
|
padding-top: 1em;
|
||||||
|
padding-bottom: 1em;
|
||||||
|
color: white;
|
||||||
|
background-color: #2B2B3D;
|
||||||
|
}
|
||||||
|
.content {
|
||||||
|
padding-left: 2em;
|
||||||
|
padding-right: 2em;
|
||||||
|
padding-bottom: 2em;
|
||||||
|
}
|
||||||
|
.forkme {
|
||||||
|
position: absolute;
|
||||||
|
right: 0;
|
||||||
|
top:0;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<div class="container">
|
||||||
|
|
||||||
|
<div class="header">
|
||||||
|
<a class="forkme" href="https://github.com/laurent22/joplin"><img src="images/ForkMe.png"/></a>
|
||||||
|
<h1 id="joplin"><img class="title-icon" src="images/Icon512.png">oplin</h1>
|
||||||
|
<p class="sub-title">A free, open source, note taking and todo application with synchronisation capabilities.</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="content">
|
||||||
|
|
||||||
|
<table class="screenshots">
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
Mobile
|
||||||
|
</th>
|
||||||
|
<th>
|
||||||
|
Command line
|
||||||
|
</th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<img class="mobile-screenshot" src="images/Mobile.png"/>
|
||||||
|
</td>
|
||||||
|
<td class="cli-screenshot-wrapper">
|
||||||
|
<pre class="cli-screenshot">
|
||||||
|
<span class="prompt">joplin:/My notebook$</span> ls -n 12
|
||||||
|
[ ] 8am conference call ☎
|
||||||
|
[ ] Make vet appointment
|
||||||
|
[ ] Go pick up parcel
|
||||||
|
[ ] Pay flat rent 💸
|
||||||
|
[X] Book ferry 🚢
|
||||||
|
[X] Deploy Joplin app
|
||||||
|
Open source stuff
|
||||||
|
Swimming pool time table 🏊
|
||||||
|
Grocery shopping list 📝
|
||||||
|
Work itinerary
|
||||||
|
Tuesday random note
|
||||||
|
Vacation plans ☀️
|
||||||
|
</pre>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<p>Joplin is a free, open source note taking and todo application, which can handle a large number of notes organised into notebooks. The notes are searchable, can be copied, tagged and modified with your own text editor. The Android application supports markdown rendering.</p>
|
||||||
|
<p>The notes can be synchronised with various targets including the file system (for example with a network directory) or with Microsoft OneDrive. When synchronising the notes, notebooks, tags and other metadata are saved to plain text files which can be easily inspected, backed up and moved around.</p>
|
||||||
|
<p>Notes exported from Evenotes via .enex files can be imported into Joplin, including the formatted content (which is converted to markdown), resources (images, attachments, etc.) and complete metadata (geolocation, updated time, created time, etc.).</p>
|
||||||
|
<p>The current release has been heavily tested so it should be stable enough for every day use. Some features however are missing such as the ability to attach resources to notes and (in the mobile app) to tag notes. For the full list of current and planned features see the Features and Roadmap sections below.</p>
|
||||||
|
<h1 id="install">Install</h1>
|
||||||
|
<p>An Android app and a command line interface are currently available:</p>
|
||||||
|
<h2 id="android">Android</h2>
|
||||||
|
<p><a href='https://play.google.com/store/apps/details?id=net.cozic.joplin&utm_source=GitHub&utm_campaign=README&pcampaignid=MKT-Other-global-all-co-prtnr-py-PartBadge-Mar2515-1'><img alt='Get it on Google Play' height="100px" src='https://play.google.com/intl/en_us/badges/images/generic/en_badge_web_generic.png'/></a></p>
|
||||||
|
<h2 id="command-line">Command line</h2>
|
||||||
|
<pre><code>npm install joplin
|
||||||
|
</code></pre><h1 id="features">Features</h1>
|
||||||
|
<ul>
|
||||||
|
<li>Mobile and command line applications.</li>
|
||||||
|
<li>Support notes, todos, tags and notebooks.</li>
|
||||||
|
<li>Offline first, so the entire data is always available on the device.</li>
|
||||||
|
<li>Ability to synchronise with multiple targets, including the file system and OneDrive (Dropbox is planned).</li>
|
||||||
|
<li>Synchronises to a plain text format, which can be easily manipulated, backed up, or exported to a different format.</li>
|
||||||
|
<li>Plain text notes, which are rendered as markdown in the mobile application.</li>
|
||||||
|
<li>Tag support (currently, tags can be imported from Evernote and modified in the CLI application, but not yet in the mobile one)</li>
|
||||||
|
<li>File attachment support (likewise, all file attachements can be imported from Evernote but currently cannot be manually added to a note)</li>
|
||||||
|
<li>Search functionality.</li>
|
||||||
|
<li>Geolocation support.</li>
|
||||||
|
<li>Supports multiple languages.</li>
|
||||||
|
</ul>
|
||||||
|
<h1 id="localisation">Localisation</h1>
|
||||||
|
<p>The applications are currently available in English and French. If you would like to contribute a translation it is quite straightforward, please follow these steps:</p>
|
||||||
|
<ul>
|
||||||
|
<li>Download Poedit, the translation editor, and install it: <a href="https://poedit.net/">https://poedit.net/</a></li>
|
||||||
|
<li>Download the file to be translated: <a href="https://raw.githubusercontent.com/laurent22/joplin/master/CliClient/locales/joplin.pot">https://raw.githubusercontent.com/laurent22/joplin/master/CliClient/locales/joplin.pot</a></li>
|
||||||
|
<li>In Poedit, open this .pot file, go into the Catalog menu and click Configuration. Change "Country" and "Language" to your own country and language.</li>
|
||||||
|
<li>From then you can translate the file. Once it's done, please send the file to <a href="https://raw.githubusercontent.com/laurent22/joplin/master/Assets/Adresse.png">this address</a>.</li>
|
||||||
|
</ul>
|
||||||
|
<h1 id="roadmap">Roadmap</h1>
|
||||||
|
<ul>
|
||||||
|
<li>All clients: End to end encryption.</li>
|
||||||
|
<li>All clients: Support for Dropbox synchronisation.</li>
|
||||||
|
<li>Mobile: Compile Windows app?</li>
|
||||||
|
<li>Mobile: Support for dark theme / light theme.</li>
|
||||||
|
<li>Mobile: Link for non-image resources.</li>
|
||||||
|
<li>Mobile: Handle tags.</li>
|
||||||
|
<li>Mobile: Markdown edition support</li>
|
||||||
|
<li>CLI: Option to open conflicts with diff program.</li>
|
||||||
|
<li>CLI: Link to open resources (images, attached files, etc).</li>
|
||||||
|
<li>CLI: Improve autocompletion.</li>
|
||||||
|
</ul>
|
||||||
|
<h1 id="command-line-usage">Command line usage</h1>
|
||||||
|
<p>Joplin can work either as an interactive CLI application or, if a command is provided to the executable, as a one-off command.</p>
|
||||||
|
<p>For example, this would start the CLI application, from where commands can be ran interactively.</p>
|
||||||
|
<pre><code>joplin
|
||||||
|
</code></pre><p>While this would create a new note and exit:</p>
|
||||||
|
<pre><code>joplin mknote "my new note"
|
||||||
|
</code></pre><h2 id="full-commands-">Full commands:</h2>
|
||||||
|
<pre><code>cat <title>
|
||||||
|
|
||||||
|
Displays the given note.
|
||||||
|
|
||||||
|
-v, --verbose Displays the complete information about note.
|
||||||
|
|
||||||
|
config [name] [value]
|
||||||
|
|
||||||
|
Gets or sets a config value. If [value] is not provided, it will show
|
||||||
|
the value of [name]. If neither [name] nor [value] is provided, it
|
||||||
|
will list the current configuration.
|
||||||
|
|
||||||
|
-v, --verbose Also displays hidden config variables.
|
||||||
|
|
||||||
|
cp <pattern> [notebook]
|
||||||
|
|
||||||
|
Duplicates the notes matching <pattern> to [notebook]. If no notebook
|
||||||
|
is specified the note is duplicated in the current notebook.
|
||||||
|
|
||||||
|
edit <title>
|
||||||
|
|
||||||
|
Edit note.
|
||||||
|
|
||||||
|
geoloc <title>
|
||||||
|
|
||||||
|
Displays a geolocation URL for the note.
|
||||||
|
|
||||||
|
import-enex <file> [notebook]
|
||||||
|
|
||||||
|
Imports an Evernote notebook file (.enex file).
|
||||||
|
|
||||||
|
-f, --force Do not ask for confirmation.
|
||||||
|
--fuzzy-matching For debugging purposes. Do not use.
|
||||||
|
|
||||||
|
ls [pattern]
|
||||||
|
|
||||||
|
Displays the notes in [notebook]. Use `ls /` to display the list of
|
||||||
|
notebooks.
|
||||||
|
|
||||||
|
-n, --limit <num> Displays only the first top <num> notes.
|
||||||
|
-s, --sort <field> Sorts the item by <field> (eg. title,
|
||||||
|
updated_time, created_time).
|
||||||
|
-r, --reverse Reverses the sorting order.
|
||||||
|
-t, --type <type> Displays only the items of the specific
|
||||||
|
type(s). Can be `n` for notes, `t` for todos,
|
||||||
|
or `nt` for notes and todos (eg. `-tt` would
|
||||||
|
display only the todos, while `-ttd` would
|
||||||
|
display notes and todos.
|
||||||
|
-f, --format <format> Either "text" or "json"
|
||||||
|
-l, --long Use long list format. Format is ID, NOTE_COUNT
|
||||||
|
(for notebook), DATE, TODO_CHECKED (for todos),
|
||||||
|
TITLE
|
||||||
|
|
||||||
|
mkbook <notebook>
|
||||||
|
|
||||||
|
Creates a new notebook.
|
||||||
|
|
||||||
|
mknote <note>
|
||||||
|
|
||||||
|
Creates a new note.
|
||||||
|
|
||||||
|
mktodo <note>
|
||||||
|
|
||||||
|
Creates a new todo.
|
||||||
|
|
||||||
|
mv <pattern> <destination>
|
||||||
|
|
||||||
|
Moves the notes matching <pattern> to <destination>. If <pattern> is a
|
||||||
|
note, it will be moved to the notebook <destination>. If <pattern> is
|
||||||
|
a notebook, it will be renamed to <destination>.
|
||||||
|
|
||||||
|
rm <pattern>
|
||||||
|
|
||||||
|
Deletes the items matching <pattern>.
|
||||||
|
|
||||||
|
-f, --force Deletes the items without asking for confirmation.
|
||||||
|
-r, --recursive Deletes a notebook.
|
||||||
|
|
||||||
|
search <pattern> [notebook]
|
||||||
|
|
||||||
|
Searches for the given <pattern> in all the notes.
|
||||||
|
|
||||||
|
set <note> <name> [value]
|
||||||
|
|
||||||
|
Sets the property <name> of the given <note> to the given [value].
|
||||||
|
|
||||||
|
status
|
||||||
|
|
||||||
|
Displays summary about the notes and notebooks.
|
||||||
|
|
||||||
|
sync
|
||||||
|
|
||||||
|
Synchronises with remote storage.
|
||||||
|
|
||||||
|
--target <target> Sync to provided target (defaults to sync.target
|
||||||
|
config value)
|
||||||
|
--random-failures For debugging purposes. Do not use.
|
||||||
|
|
||||||
|
tag <command> [tag] [note]
|
||||||
|
|
||||||
|
<command> can be "add", "remove" or "list" to assign or remove [tag]
|
||||||
|
from [note], or to list the notes associated with [tag]. The command
|
||||||
|
`tag list` can be used to list all the tags.
|
||||||
|
|
||||||
|
todo <action> <pattern>
|
||||||
|
|
||||||
|
<action> can either be "toggle" or "clear". Use "toggle" to toggle the
|
||||||
|
given todo between completed and uncompleted state (If the target is a
|
||||||
|
regular note it will be converted to a todo). Use "clear" to convert
|
||||||
|
the todo back to a regular note.
|
||||||
|
|
||||||
|
toggle <pattern>
|
||||||
|
|
||||||
|
Toggles the given todo between completed and uncompleted. If the
|
||||||
|
target is not a single note it will be converted to a todo.
|
||||||
|
|
||||||
|
use <notebook>
|
||||||
|
|
||||||
|
Switches to [notebook] - all further operations will happen within
|
||||||
|
this notebook.
|
||||||
|
|
||||||
|
version
|
||||||
|
|
||||||
|
Displays version information
|
||||||
|
</code></pre>
|
||||||
|
<hr/>Copyright (c) 2017 Laurent Cozic
|
||||||
|
</body>
|
||||||
|
</html>
|
Loading…
Reference in New Issue
Block a user