1
0
mirror of https://github.com/laurent22/joplin.git synced 2024-12-24 10:27:10 +02:00

Merge master into encryption branch

This commit is contained in:
Laurent Cozic 2017-12-15 07:31:57 +00:00
parent 5bc72e2b44
commit d9c1e30e9b
19 changed files with 121 additions and 96 deletions

View File

@ -34,12 +34,17 @@ From `/ElectronClient` you can also run `run.sh` to run the app for testing.
# Building the Mobile application
From `/ReactNativeClient`, run `npm install`, then `react-native run-ios` or `react-native run-android`.
First you need to to setup React Native to build projects with native code. For this, follow the instructions on the [Get Started](https://facebook.github.io/react-native/docs/getting-started.html) tutorial, in the "Building Projects with Native Code" tab.
Then, from `/ReactNativeClient`, run `npm install`, then `react-native run-ios` or `react-native run-android`.
# Building the Terminal application
From `/CliClient`:
- Run `npm install`
- Then `build.sh`
- Copy the translations to the build directory: `rsync --delete -aP ../ReactNativeClient/locales/ build/locales/`
- Run `run.sh` to start the application for testing.
```
cd CliClient
npm install
./build.sh
rsync --delete -aP ../ReactNativeClient/locales/ build/locales/
```
Run `run.sh` to start the application for testing.

View File

@ -65,12 +65,10 @@ class Command extends BaseCommand {
} else {
const commandNames = this.allCommands().map((a) => a.name());
this.stdout(_('Type `help [command]` for more information about a command.'));
this.stdout(_('Type `help [command]` for more information about a command; or type `help all` for the complete usage information.'));
this.stdout('');
this.stdout(_('The possible commands are:'));
this.stdout('');
this.stdout(_('Type `help all` for the complete help of all the commands.'));
this.stdout('');
this.stdout(commandNames.join(', '));
this.stdout('');
this.stdout(_('In any command, a note or notebook can be refered to by title or ID, or using the shortcuts `$n` or `$b` for, respectively, the currently selected note or notebook. `$c` can be used to refer to the currently selected item.'));

View File

@ -29,7 +29,7 @@ class Command extends BaseCommand {
const folder = await app().loadItem(BaseModel.TYPE_FOLDER, pattern);
if (!folder) throw new Error(_('Cannot find "%s".', pattern));
const ok = force ? true : await this.prompt(_('Delete notebook "%s"?', folder.title), { booleanAnswerDefault: 'n' });
const ok = force ? true : await this.prompt(_('Delete notebook? All notes within this notebook will also be deleted.'), { booleanAnswerDefault: 'n' });
if (!ok) return;
await Folder.delete(folder.id);

View File

@ -1,5 +1,6 @@
const Note = require('lib/models/Note.js');
const TextWidget = require('tkwidgets/TextWidget.js');
const { _ } = require('lib/locale.js');
class NoteWidget extends TextWidget {
@ -32,8 +33,15 @@ class NoteWidget extends TextWidget {
this.reloadNote();
}
welcomeText() {
return _('Welcome to Joplin!\n\nType `:help shortcuts` for the list of keyboard shortcuts, or just `:help` for usage information.\n\nFor example, to create a notebook press `mb`; to create a note press `mn`.');
}
reloadNote() {
if (this.noteId_) {
if (!this.noteId_ && !this.notes.length) {
this.text = this.welcomeText();
this.scrollTop = 0;
} else if (this.noteId_) {
this.doAsync('loadNote', async () => {
this.note_ = await Note.load(this.noteId_);
this.text = this.note_ ? this.note_.title + "\n\n" + this.note_.body : '';

View File

@ -15,70 +15,70 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.0.4\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"POT-Creation-Date: \n"
"PO-Revision-Date: \n"
msgid "Give focus to next pane"
msgstr "Fokussiere das nächste Fenster"
msgstr "Das nächste Fenster fokussieren"
msgid "Give focus to previous pane"
msgstr "Fokussiere das vorherige Fenster"
msgstr "Das vorherige Fenster fokussieren"
msgid "Enter command line mode"
msgstr "Wechsle zum Terminal-Modus"
msgstr "Zum Terminal-Modus wechseln"
msgid "Exit command line mode"
msgstr "Verlasse den Terminal-Modus"
msgstr "Den Terminal-Modus verlassen"
msgid "Edit the selected note"
msgstr "Bearbeite die ausgewählte Notiz"
msgstr "Die ausgewählte Notiz bearbeiten"
msgid "Cancel the current command."
msgstr "Breche den momentanen Befehl ab."
msgstr "Den momentanen Befehl abbrechen."
msgid "Exit the application."
msgstr "Verlasse das Programm."
msgstr "Das Programm verlassen."
msgid "Delete the currently selected note or notebook."
msgstr ""
"Lösche die momentan ausgewählte Notiz oder das momentan ausgewählte "
"Notizbuch."
msgstr "Die momentan ausgewählte Notiz(-buch) löschen."
msgid "To delete a tag, untag the associated notes."
msgstr ""
"Um eine Markierung zu löschen, habe die Markierungen zugehöriger Notizen auf."
"Hebe die Markierungen zugehöriger Notizen auf, um eine Markierung zu löschen."
msgid "Please select the note or notebook to be deleted first."
msgstr ""
"Bitte wählen Sie zuert eine Notiz oder ein Notizbuch aus, das gelöscht "
"werden soll."
"Wähle bitte zuerst eine Notiz oder ein Notizbuch aus, das gelöscht werden "
"soll."
msgid "Set a to-do as completed / not completed"
msgstr "Markiere ein ToDo as abgeschlossen / nicht abgeschlossen"
msgstr "Ein To-Do as abgeschlossen / nicht abgeschlossen markieren"
#, fuzzy
msgid "[t]oggle [c]onsole between maximized/minimized/hidden/visible."
msgstr ""
"Schal[t]e das Terminal zwischen maximiert/minimiert/versteckt/sichtbar um."
msgid "Search"
msgstr "Suche"
msgstr "Suchen"
msgid "[t]oggle note [m]etadata."
msgstr "Schal[t]e Notiz-[M]etadata ein."
msgstr "Notiz-[M]etadata einschal[t]en."
msgid "[M]ake a new [n]ote"
msgstr "Erstelle eine neue Notiz"
msgstr "Eine neue [N]otiz [m]achen"
msgid "[M]ake a new [t]odo"
msgstr "Erstelle ein neues To-Do"
msgstr "Ein neues [T]o-Do [m]achen"
msgid "[M]ake a new note[b]ook"
msgstr "Erstelle ein neues Notiz[b]uch"
msgstr "Ein neues Notiz[b]uch [m]achen"
#, fuzzy
msgid "Copy ([Y]ank) the [n]ote to a notebook."
msgstr "Kopiere die Notiz zu einem Notizbuch."
msgstr "Die Notiz zu einem Notizbuch kopieren."
msgid "Move the note to a notebook."
msgstr "Verschiebe die Notiz zu einem Notizbuch."
msgstr "Die Notiz zu einem Notizbuch verschieben."
msgid "Press Ctrl+D or type \"exit\" to exit the application"
msgstr "Drücke Strg+D oder schreibe \"exit\", um das Programm zu verlassen"
@ -120,7 +120,7 @@ msgstr "Der Befehl \"%s\" ist nur im GUI Modus verfügbar"
#, javascript-format
msgid "Missing required argument: %s"
msgstr "Fehlender benötigtes Argument: %s"
msgstr "Fehlendes benötigtes Argument: %s"
#, javascript-format
msgid "%s: %s"
@ -176,14 +176,14 @@ msgstr ""
"kopiert."
msgid "Marks a to-do as done."
msgstr "Markiert ein ToDo als abgeschlossen."
msgstr "Markiert ein To-Do als abgeschlossen."
#, javascript-format
msgid "Note is not a to-do: \"%s\""
msgstr "Notiz ist kein Todo: \"%s\""
msgstr "Notiz ist kein To-Do: \"%s\""
msgid "Edit note."
msgstr "Bearbeite Notiz."
msgstr "Notiz bearbeiten."
msgid ""
"No text editor is defined. Please set it using `config editor <editor-path>`"
@ -200,7 +200,7 @@ msgstr "Notiz \"%s\" existiert nicht. Soll sie erstellt werden?"
msgid "Starting to edit note. Close the editor to get back to the prompt."
msgstr ""
"Beginne die Notiz zu bearbeiten. Schließ das Textbearbeitungsprogramm um "
"Beginne die Notiz zu bearbeiten. Schließ das Textbearbeitungsprogramm, um "
"zurück zum Terminal zu kommen."
msgid "Note has been saved."
@ -405,7 +405,7 @@ msgstr ""
"%d Notizen stimmen mit diesem Muster überein. Sollen sie gelöscht werden?"
msgid "Delete note?"
msgstr "Lösche Notiz?"
msgstr "Notiz löschen?"
msgid "Searches for the given <pattern> in all the notes."
msgstr "Sucht nach dem gegebenen <pattern> in allen Notizen."
@ -423,7 +423,7 @@ msgstr "Synchronisiert mit "
msgid "Sync to provided target (defaults to sync.target config value)"
msgstr ""
"Synchronisiere mit dem gegebenen Ziel ( voreingestellt auf den sync.target "
"Mit dem gegebenen Ziel synchronisieren ( voreingestellt auf den sync.target "
"Optionswert)"
msgid "Synchronisation is already in progress."
@ -496,7 +496,7 @@ msgstr ""
"Notizbuch verrichtet."
msgid "Displays version information"
msgstr ""
msgstr "Zeigt die Versionsnummer an"
#, javascript-format
msgid "%s %s (%s)"
@ -540,7 +540,7 @@ msgid ""
msgstr ""
"Bitte öffne die folgende URL in deinem Browser, um das Programm zu "
"authentifizieren. Das Programm wird einen Ordner in \"Apps/Joplin\" "
"erstellen und wird nur in diesem Ordner schreiben und lesen. Es wird keinen "
"erstellen und wird nur in diesem Ordner schreiben und lesen. Es wird weder "
"Zugriff auf Dateien außerhalb dieses Ordners haben, noch auf persönliche "
"Daten. Es werden keine Daten mit Dritten geteilt."
@ -560,7 +560,7 @@ msgid "New notebook"
msgstr "Neues Notizbuch"
msgid "Import Evernote notes"
msgstr "Importiere Evernote Notizen"
msgstr "Evernote Notizen importieren"
msgid "Evernote Export Files"
msgstr ""
@ -626,7 +626,7 @@ msgid "Please create a notebook first."
msgstr "Bitte erstelle zuerst ein Notizbuch."
msgid "Note title:"
msgstr "Notiz titel:"
msgstr "Notiz Titel:"
msgid "Please create a notebook first"
msgstr "Bitte erstelle zuerst ein Notizbuch"
@ -646,9 +646,8 @@ msgstr "Trenne jede Markierung mit einem Komma."
msgid "Rename notebook:"
msgstr "Benne Notizbuch um:"
#, fuzzy
msgid "Set alarm:"
msgstr "Erstelle Alarm"
msgstr "Alarm erstellen:"
msgid "Layout"
msgstr "Layout"
@ -661,10 +660,10 @@ msgid "View them now"
msgstr ""
msgid "Add or remove tags"
msgstr "Füge hinzu oder entferne Markierungen"
msgstr "Markierungen hinzufügen oder entfernen"
msgid "Switch between note and to-do type"
msgstr "Wechsel zwischen Notiz und To-Do Typ"
msgstr "Zwischen Notiz und To-Do Typ wechseln"
msgid "Delete"
msgstr "Löschen"
@ -674,17 +673,18 @@ msgstr "Notizen löschen?"
msgid "No notes in here. Create one by clicking on \"New note\"."
msgstr ""
"Hier sind keine Notizen. Erstelle eine indem zu auf \"Neue Notiz\" drückst."
"Hier sind noch keine Notizen. Erstelle eine, indem du auf \"Neue Notiz\" "
"drückst."
#, javascript-format
msgid "Unsupported link or message: %s"
msgstr "Nicht unterstützter Link oder Nachricht: %s"
msgid "Attach file"
msgstr "Hänge Datei an"
msgstr "Datei anhängen"
msgid "Set alarm"
msgstr "Erstelle Alarm"
msgstr "Alarm erstellen"
msgid "Refresh"
msgstr "Aktualisieren"
@ -724,15 +724,15 @@ msgid "Tags"
msgstr "Markierungen"
msgid "Searches"
msgstr "Sucht"
msgstr "Suchen"
#, javascript-format
#, fuzzy, javascript-format
msgid "Usage: %s"
msgstr ""
msgstr "Benutzung: %s"
#, javascript-format
msgid "Unknown flag: %s"
msgstr ""
msgstr "Unbekanntes Argument: %s"
msgid "File system"
msgstr "Dateisystem"
@ -766,6 +766,12 @@ msgid ""
"\n"
"Please consider using a regular OneDrive account."
msgstr ""
"Konnte nicht mit OneDrive synchronisieren.\n"
"\n"
"Dieser Fehler kommt oft vor, wenn OneDrive Business benutzt wird, das leider "
"nicht unterstützt wird.\n"
"\n"
"Bitte benutze stattdessen einen normalen OneDrive account."
#, javascript-format
msgid "Cannot access %s"
@ -876,10 +882,10 @@ msgid "Dark"
msgstr "Dunkel"
msgid "Show uncompleted todos on top of the lists"
msgstr "Zeige unvollständige ToDos oben in der Liste an"
msgstr "Unvollständige To-Dos oben in der Liste anzeigen"
msgid "Save geo-location with notes"
msgstr "Speicher momentanen Standort zusammen mit Notizen"
msgstr "Momentanen Standort zusammen mit Notizen speichern"
msgid "Synchronisation interval"
msgstr "Synchronisationsinterval"
@ -900,10 +906,10 @@ msgid "%d hours"
msgstr "%d Stunden"
msgid "Automatically update the application"
msgstr "Halte die Applikation automatisch auf den neusten Stand"
msgstr "Die Applikation automatisch aktualisieren"
msgid "Show advanced options"
msgstr "Zeige erweiterte Optionen an"
msgstr "Erweiterte Optionen anzeigen"
msgid "Synchronisation target"
msgstr "Synchronisationsziel"
@ -913,8 +919,8 @@ msgid ""
"`sync.2.path` to specify the target directory."
msgstr ""
"Das Synchronisationsziel, mit dem synchronisiert werden soll. Wenn mit dem "
"Dateisystem synchronisiert werden soll, setzen Sie den Wert zu `sync.2."
"path`, um den Zielpfad zu spezifizieren."
"Dateisystem synchronisiert werden soll, setz den Wert zu `sync.2.path`, um "
"den Zielpfad zu spezifizieren."
#, javascript-format
msgid "Invalid option value: \"%s\". Possible values are: %s."
@ -925,10 +931,11 @@ msgstr ""
#, javascript-format
msgid "\"%s\": \"%s\""
msgstr ""
msgstr "\"%s\": \"%s\""
msgid "Sync status (synced items / total items)"
msgstr "Synchronisations status (synchronisierte Notizen / insgesamt )"
msgstr ""
"Synchronisationsstatus (synchronisierte Notizen / vorhandenen Notizen )"
#, javascript-format
msgid "%s: %d/%d"
@ -954,7 +961,7 @@ msgid "%s: %d notes"
msgstr "%s: %d Notizen"
msgid "Coming alarms"
msgstr "Anstehender Alarm"
msgstr "Anstehende Alarme"
#, javascript-format
msgid "On %s: %s"
@ -962,8 +969,8 @@ msgstr "Auf %s: %s"
msgid "There are currently no notes. Create one by clicking on the (+) button."
msgstr ""
"Momentan existieren noch keine Notizen. Erstelle eine indem Sie auf den (+) "
"Knopf drücken."
"Momentan existieren noch keine Notizen. Erstelle eine, indem du auf den (+) "
"Knopf drückst."
msgid "Delete these notes?"
msgstr "Sollen diese Notizen gelöscht werden?"
@ -981,11 +988,11 @@ msgid "Configuration"
msgstr "Konfiguration"
msgid "Move to notebook..."
msgstr "Verschiebe zu Notizbuch..."
msgstr "Zu Notizbuch verschieben..."
#, javascript-format
msgid "Move %d notes to notebook \"%s\"?"
msgstr "Verschiebe %d Notizen zu dem Notizbuch \"%s\"?"
msgstr "%d Notizen zu dem Notizbuch \"%s\" verschieben?"
msgid "Select date"
msgstr "Datum ausswählen"
@ -1026,7 +1033,7 @@ msgid "Convert to note"
msgstr "Zu einer Notiz umwandeln"
msgid "Convert to todo"
msgstr "Zu einem ToDo umwandeln"
msgstr "Zu einem To-Do umwandeln"
msgid "Hide metadata"
msgstr "Metadaten verstecken"
@ -1047,13 +1054,13 @@ msgid ""
"Click on the (+) button to create a new note or notebook. Click on the side "
"menu to access your existing notebooks."
msgstr ""
"Drücken Sie auf den (+) Knopf, um eine neue Notiz oder ein neues Notizbuch "
"zu erstellen."
"Drücke auf den (+) Knopf, um eine neue Notiz oder ein neues Notizbuch zu "
"erstellen."
msgid "You currently have no notebook. Create one by clicking on (+) button."
msgstr ""
"Du habst noch kein Notizbuch. Sie können eines erstellen, indem Sie auf den "
"(+) Knopf drücken."
"Du hast noch kein Notizbuch. Du kannst eines erstellen, indem du auf den (+) "
"Knopf drückst."
msgid "Welcome"
msgstr "Wilkommen"

View File

@ -1,6 +1,6 @@
{
"name": "joplin",
"version": "0.10.82",
"version": "0.10.83",
"lockfileVersion": 1,
"requires": true,
"dependencies": {

View File

@ -18,7 +18,7 @@
],
"owner": "Laurent Cozic"
},
"version": "0.10.82",
"version": "0.10.83",
"bin": {
"joplin": "./main.js"
},

View File

@ -1,5 +1,6 @@
const { _ } = require('lib/locale.js');
const { BrowserWindow } = require('electron');
const { shim } = require('lib/shim');
const url = require('url')
const path = require('path')
const urlUtils = require('lib/urlUtils.js');
@ -38,12 +39,18 @@ class ElectronAppWrapper {
defaultHeight: 600,
});
this.win_ = new BrowserWindow({
const windowOptions = {
'x': windowState.x,
'y': windowState.y,
'width': windowState.width,
'height': windowState.height
})
'height': windowState.height,
};
// Linux icon workaround for bug https://github.com/electron-userland/electron-builder/issues/2098
// Fix: https://github.com/electron-userland/electron-builder/issues/2269
if (shim.isLinux()) windowOptions.icon = __dirname + '/build/icons/128x128.png';
this.win_ = new BrowserWindow(windowOptions)
this.win_.loadURL(url.format({
pathname: path.join(__dirname, 'index.html'),

View File

@ -21,7 +21,7 @@ fs.readdirSync(guiPath).forEach((filename) => {
if (ext !== 'jsx') return;
p.pop();
const basePath = p.join('/');
const basePath = p.join('.');
const jsPath = basePath + '.min.js';

View File

@ -59,7 +59,7 @@ class ConfigScreenComponent extends React.Component {
}
return (
<div key={key+value} style={rowStyle}>
<div key={key} style={rowStyle}>
<div style={labelStyle}><label>{md.label()}</label></div>
<select value={value} style={controlStyle} onChange={(event) => { updateSettingValue(key, event.target.value) }}>
{items}
@ -72,9 +72,9 @@ class ConfigScreenComponent extends React.Component {
}
return (
<div key={key+value} style={rowStyle}>
<div key={key} style={rowStyle}>
<div style={controlStyle}>
<input id={'setting_checkbox_' + key} type="checkbox" defaultChecked={!!value} onChange={(event) => { onCheckboxClick(event) }}/><label onClick={(event) => { onCheckboxClick(event) }} style={labelStyle} htmlFor={'setting_checkbox_' + key}>{md.label()}</label>
<input id={'setting_checkbox_' + key} type="checkbox" checked={!!value} onChange={(event) => { onCheckboxClick(event) }}/><label onClick={(event) => { onCheckboxClick(event) }} style={labelStyle} htmlFor={'setting_checkbox_' + key}>{md.label()}</label>
</div>
</div>
);
@ -86,7 +86,7 @@ class ConfigScreenComponent extends React.Component {
}
return (
<div key={key+value} style={rowStyle}>
<div key={key} style={rowStyle}>
<div style={labelStyle}><label>{md.label()}</label></div>
<input type="text" style={controlStyle} value={this.state.settings[key]} onChange={(event) => {onTextChange(event)}} />
</div>

View File

@ -98,7 +98,7 @@ class SideBarComponent extends React.Component {
let deleteMessage = '';
if (itemType === BaseModel.TYPE_FOLDER) {
deleteMessage = _('Delete notebook?');
deleteMessage = _('Delete notebook? All notes within this notebook will also be deleted.');
} else if (itemType === BaseModel.TYPE_TAG) {
deleteMessage = _('Remove this tag from all the notes?');
} else if (itemType === BaseModel.TYPE_SEARCH) {

View File

@ -1,6 +1,6 @@
{
"name": "Joplin",
"version": "0.10.38",
"version": "0.10.39",
"lockfileVersion": 1,
"requires": true,
"dependencies": {

View File

@ -1,6 +1,6 @@
{
"name": "Joplin",
"version": "0.10.38",
"version": "0.10.39",
"description": "Joplin for Desktop",
"main": "main.js",
"scripts": {

View File

@ -14,4 +14,4 @@ echo "Create a draft release at: https://github.com/laurent22/joplin/releases/ta
echo ""
echo "Then run:"
echo ""
echo "node $APP_DIR/update-readme-download.js"
echo "node $APP_DIR/update-readme-download.js && git add -A && git commit -m 'Update website' && git push"

View File

@ -18,9 +18,9 @@ Three types of applications are available: for the **desktop** (Windows, macOS a
Operating System | Download
-----------------|--------
Windows | <a href='https://github.com/laurent22/joplin/releases/download/v0.10.38/Joplin-Setup-0.10.38.exe'><img alt='Get it on Windows' height="40px" src='https://raw.githubusercontent.com/laurent22/joplin/master/docs/images/BadgeWindows.png'/></a>
macOS | <a href='https://github.com/laurent22/joplin/releases/download/v0.10.38/Joplin-0.10.38.dmg'><img alt='Get it on macOS' height="40px" src='https://raw.githubusercontent.com/laurent22/joplin/master/docs/images/BadgeMacOS.png'/></a>
Linux | <a href='https://github.com/laurent22/joplin/releases/download/v0.10.38/Joplin-0.10.38-x86_64.AppImage'><img alt='Get it on macOS' height="40px" src='https://raw.githubusercontent.com/laurent22/joplin/master/docs/images/BadgeLinux.png'/></a>
Windows | <a href='https://github.com/laurent22/joplin/releases/download/v0.10.39/Joplin-Setup-0.10.39.exe'><img alt='Get it on Windows' height="40px" src='https://raw.githubusercontent.com/laurent22/joplin/master/docs/images/BadgeWindows.png'/></a>
macOS | <a href='https://github.com/laurent22/joplin/releases/download/v0.10.39/Joplin-0.10.39.dmg'><img alt='Get it on macOS' height="40px" src='https://raw.githubusercontent.com/laurent22/joplin/master/docs/images/BadgeMacOS.png'/></a>
Linux | <a href='https://github.com/laurent22/joplin/releases/download/v0.10.39/Joplin-0.10.39-x86_64.AppImage'><img alt='Get it on macOS' height="40px" src='https://raw.githubusercontent.com/laurent22/joplin/master/docs/images/BadgeLinux.png'/></a>
## Mobile applications

View File

@ -79,7 +79,7 @@ Rename the currently selected notebook ($b) to "Something":
Attach a local file to the currently selected note ($n):
ren $n /home/laurent/pictures/Vacation12.jpg
attach $n /home/laurent/pictures/Vacation12.jpg
The configuration can also be changed from command-line mode. For example, to change the current editor to Sublime Text:

View File

@ -69,7 +69,7 @@ class NotesScreenComponent extends BaseScreenComponent {
}
deleteFolder_onPress(folderId) {
dialogs.confirm(this, _('Delete notebook?')).then((ok) => {
dialogs.confirm(this, _('Delete notebook? All notes within this notebook will also be deleted.')).then((ok) => {
if (!ok) return;
Folder.delete(folderId).then(() => {

View File

@ -218,15 +218,15 @@
<tbody>
<tr>
<td>Windows</td>
<td><a href='https://github.com/laurent22/joplin/releases/download/v0.10.38/Joplin-Setup-0.10.38.exe'><img alt='Get it on Windows' height="40px" src='https://raw.githubusercontent.com/laurent22/joplin/master/docs/images/BadgeWindows.png'/></a></td>
<td><a href='https://github.com/laurent22/joplin/releases/download/v0.10.39/Joplin-Setup-0.10.39.exe'><img alt='Get it on Windows' height="40px" src='https://raw.githubusercontent.com/laurent22/joplin/master/docs/images/BadgeWindows.png'/></a></td>
</tr>
<tr>
<td>macOS</td>
<td><a href='https://github.com/laurent22/joplin/releases/download/v0.10.38/Joplin-0.10.38.dmg'><img alt='Get it on macOS' height="40px" src='https://raw.githubusercontent.com/laurent22/joplin/master/docs/images/BadgeMacOS.png'/></a></td>
<td><a href='https://github.com/laurent22/joplin/releases/download/v0.10.39/Joplin-0.10.39.dmg'><img alt='Get it on macOS' height="40px" src='https://raw.githubusercontent.com/laurent22/joplin/master/docs/images/BadgeMacOS.png'/></a></td>
</tr>
<tr>
<td>Linux</td>
<td><a href='https://github.com/laurent22/joplin/releases/download/v0.10.38/Joplin-0.10.38-x86_64.AppImage'><img alt='Get it on macOS' height="40px" src='https://raw.githubusercontent.com/laurent22/joplin/master/docs/images/BadgeLinux.png'/></a></td>
<td><a href='https://github.com/laurent22/joplin/releases/download/v0.10.39/Joplin-0.10.39-x86_64.AppImage'><img alt='Get it on macOS' height="40px" src='https://raw.githubusercontent.com/laurent22/joplin/master/docs/images/BadgeLinux.png'/></a></td>
</tr>
</tbody>
</table>

View File

@ -258,7 +258,7 @@ sudo ln -s ~/.joplin-bin/bin/joplin /usr/bin/joplin
</code></pre><p>Rename the currently selected notebook ($b) to &quot;Something&quot;:</p>
<pre><code>ren $b &quot;Something&quot;
</code></pre><p>Attach a local file to the currently selected note ($n):</p>
<pre><code>ren $n /home/laurent/pictures/Vacation12.jpg
<pre><code>attach $n /home/laurent/pictures/Vacation12.jpg
</code></pre><p>The configuration can also be changed from command-line mode. For example, to change the current editor to Sublime Text:</p>
<pre><code>config editor &quot;subl -w&quot;
</code></pre><h2 id="editing-a-note">Editing a note</h2>