feat(docs): improve documentation, add icons, reorganize
|
After Width: | Height: | Size: 79 KiB |
|
After Width: | Height: | Size: 25 KiB |
|
After Width: | Height: | Size: 93 KiB |
@@ -0,0 +1,18 @@
|
||||
# Evernote
|
||||
Trilium can import ENEX files which are used by Evernote for backup/export. One ENEX file represents content (notes and resources) of one notebook.
|
||||
|
||||
## Export ENEX from Evernote
|
||||
|
||||
To export ENEX file, you need to have a _legacy_ desktop version of Evernote (i.e. not web/mobile). Right click on notebook and select export and follow the wizard.
|
||||
|
||||
## Import ENEX in Trilium
|
||||
|
||||
Once you have ENEX file, you can import it to Trilium. Right click on some note (to which you want to import the file), click on "Import" and select the ENEX file.
|
||||
|
||||
After importing the ENEX file, go over the imported notes and resources to be sure the import went well, and you didn't lose any data.
|
||||
|
||||
## Limitations
|
||||
|
||||
All resources (except for images) are created as note's attachments.
|
||||
|
||||
HTML inside ENEX files is not exactly valid so some formatting maybe broken or lost. You can report major problems into [Trilium issue tracker](https://github.com/TriliumNext/Notes/issues).
|
||||
@@ -0,0 +1,41 @@
|
||||
# Markdown
|
||||
Trilium Notes supports importing Markdown restricted to the [CommonMark specification](https://spec.commonmark.org/current/) (where [tables are not supported](https://github.com/TriliumNext/Notes/issues/2026))
|
||||
|
||||
## Import
|
||||
|
||||
### Clipboard import
|
||||
|
||||
If you want to import just a chunk of markdown from clipboard, you can do it from editor block menu:
|
||||
|
||||

|
||||
|
||||
### File import
|
||||
|
||||
You can also import Markdown files from files:
|
||||
|
||||
* single markdown file (with .md extension)
|
||||
* whole tree of markdown files (packaged into [.zip](https://en.wikipedia.org/wiki/Tar_\(computing\)) archive)
|
||||
* Markdown files need to be packaged into ZIP archive because browser can't read directories, only single files.
|
||||
* You can use e.g. [7-zip](https://www.7-zip.org) to package directory of markdown files into the ZIP file
|
||||
|
||||
\[\[gifs/markdown-file-import.gif\]\]
|
||||
|
||||

|
||||
|
||||
## Export
|
||||
|
||||
### Subtree export
|
||||
|
||||
You can export whole subtree to ZIP archive which will have directory structured modelled after subtree structure:
|
||||
|
||||

|
||||
|
||||
### Single note export
|
||||
|
||||
If you want to export just single note without its subtree, you can do it from Note actions menu:
|
||||
|
||||

|
||||
|
||||
### Exporting protected notes
|
||||
|
||||
If you want to export protected notes, enter a protected session first! This will export the notes in an unencrypted form, so if you reimport into Trilium, make sure to re-protect these notes.
|
||||
@@ -0,0 +1,51 @@
|
||||
# OneNote
|
||||
**This page describes a method to migrate via EverNote Legacy, but this app is no longer available/working.**
|
||||
|
||||
## Prep Onenote notes for best compatibility
|
||||
|
||||
* Remove Onenote Tags and replace with Emoji if possible (Onenote Tags will get imported into trilium as an image which clutters the Trilium tree somewhat)
|
||||
* Make sure to use Onenote headings where applicable (These will be carried over correctly into Trilium)
|
||||
* Remove extra whitespace in Onenote (Whitespace seems to be more noticible in Trilium, so removing it now will make it look nicer in trilium)
|
||||
* If possible, try to avoid very long Onenote pages. Trilium works best with shorter concise pages with any number of sub or (sub-sub...) pages.
|
||||
* Make sure numbered lists don't have unusual spaces between items in the list (Sometimes the numbered list will start at 1 again in Trilum if there is an extra space in the list in OneNote).
|
||||
|
||||
## Migration Procedure
|
||||
|
||||
### Import into Evernote from OneNote:
|
||||
|
||||
* Install [Evernote Legacy](https://web.archive.org/web/20230327110646/https://help.evernote.com/hc/en-us/articles/360052560314). Current versions of Evernote do not have this functionality. (Requires Evernote account, but import works without internet connection - be sure to NOT sync notes to Evernote!).
|
||||
* In evernote navigate to File > Import > Onenote > Notebook > Section > OK
|
||||
|
||||
If exporting all sections at a time, they will not be grouped in folders - they will all be added to a single folder, but the order will be kept, so you can re-group into folders after importing to Trilium
|
||||
|
||||
### Export from Evernote
|
||||
|
||||
* Right click on the created notebook in Evernote and choose "Export Notes…"
|
||||
* Use the default export format of .enex
|
||||
|
||||
### Cleanup enex file (optional)
|
||||
|
||||
* If the Onenote header (that is at the top of each Onenote page) is not desired, you can use the following regex to remove them in a text editor like VsCode:
|
||||
|
||||
Find (using regex): `.<div.*><h1` Replace with: `<h1`
|
||||
|
||||
|
||||
### Import into Trilium
|
||||
|
||||
* In Trilium, right click on the root node and choose Import (all default options should be fine).
|
||||
* Select the .enex file exported from Evernote
|
||||
* Be patient. Large .enex files may take a few minutes to process
|
||||
* Repeat import for each .enex file
|
||||
|
||||
## Other importing notes:
|
||||
|
||||
* Centered text in Onenote will be left-justified after importing into Trilium
|
||||
* Internal onenote links will obviously be broken, but the link still exists so you can do a search in Trilium to find all onenote:// links and then re-link to the proper Trilium page (there is no way to link to a paragraph in trilium, so it's good to keep trilium pages short so links point to a small chunk of information instead of a massive note)
|
||||
* Text colors, highlights, and formatting generally carries over well
|
||||
* Revision history will be lost, but any new revisions will be tracked in Trilium
|
||||
* The structure of notes are not maintained exactly, so if you had sub-notes in Onenote, you may have to re-arrange the notes accordingly (This is easy since the order of the notes is preserved).
|
||||
* Evernote tags are created for each "section" in OneNote and these tags are carried over to Trilium as attributes
|
||||
* If the tags are not desired, you can turn them off in the Evernote export options.
|
||||
* If the "Created with OneNote" text is not desired, do a find/replace in the enex files before importing to Trilium
|
||||
* Some links will be disabled (not clickable) when importing from enex.
|
||||
* Files, screenshots, and attachments are all preserved (This is the only one-note export option that seems to preserve all of these).
|
||||
@@ -0,0 +1,78 @@
|
||||
# Keyboard Shortcuts
|
||||
This is supposed to be a complete list of keyboard shortcuts. Note that some of these may work only in certain contexts (e.g. in tree pane or note editor).
|
||||
|
||||
It is also possible to configure most keyboard shortcuts in Options -> Keyboard shortcuts. Using `global:` prefix, you can assign a shortcut which will work even without Trilium being in focus (requires app restart to take effect).
|
||||
|
||||
## Note navigation
|
||||
|
||||
* <kbd><span>↑</span></kbd>, <kbd><span>↓</span></kbd> - go up/down in the list of notes, <kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd><span>↑</span></kbd> and <kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd><span>↓</span></kbd> work also from editor
|
||||
* <kbd><span>←</span></kbd>, <kbd><span>→</span></kbd> - collapse/expand node
|
||||
* <kbd>Alt</kbd> + <kbd><span>←</span></kbd>, <kbd>Alt</kbd> + <kbd><span>→</span></kbd> - go back / forwards in the history
|
||||
* <kbd>Ctrl</kbd> + <kbd>J</kbd> - show ["Jump to" dialog](Navigation/Note%20Navigation.md)
|
||||
* <kbd>Ctrl</kbd> + <kbd>.</kbd> - scroll to current note (useful when you scroll away from your note or your focus is currently in the editor)
|
||||
* <kbd><span>Backspace</span></kbd> - jumps to parent note
|
||||
* <kbd>Alt</kbd> + <kbd>C</kbd> - collapse whole note tree
|
||||
* <kbd>Alt</kbd> + <kbd>-</kbd> (alt with minus sign) - collapse subtree (if some subtree takes too much space on tree pane you can collapse it)
|
||||
* you can define a [label](../Advanced%20Usage/Attributes.md) `#keyboardShortcut` with e.g. value <kbd>Ctrl</kbd> + <kbd>I</kbd> . Pressing this keyboard combination will then bring you to the note on which it is defined. Note that Trilium must be reloaded/restarted (<kbd>Ctrl</kbd> + <kbd>R</kbd> ) for changes to be in effect.
|
||||
|
||||
See demo of some of these features in [note navigation](Navigation/Note%20Navigation.md).
|
||||
|
||||
## Tabs
|
||||
|
||||
* <kbd>Ctrl</kbd> + <kbd>🖱 Left click</kbd> - (or middle mouse click) on note link opens note in a new tab
|
||||
|
||||
Only in desktop (electron build):
|
||||
|
||||
* <kbd>Ctrl</kbd> + <kbd>T</kbd> - opens empty tab
|
||||
* <kbd>Ctrl</kbd> + <kbd>W</kbd> - closes active tab
|
||||
* <kbd>Ctrl</kbd> + <kbd>Tab</kbd> - activates next tab
|
||||
* <kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>Tab</kbd> - activates previous tab
|
||||
|
||||
## Creating notes
|
||||
|
||||
* `CTRL+O` - creates new note after the current note
|
||||
* `CTRL+P` - creates new sub-note into current note
|
||||
* `F2` - edit [prefix](Navigation/Note%20Navigation.md) of current note clone
|
||||
|
||||
## Moving / cloning notes
|
||||
|
||||
* <kbd>Ctrl</kbd> + <kbd><span>↑</span></kbd> , Ctrl + <kbd><span>↓</span></kbd> - move note up/down in the note list
|
||||
* <kbd>Ctrl</kbd> + <kbd><span>←</span></kbd> - move note up in the note tree
|
||||
* <kbd>Ctrl</kbd>+<kbd><span>→</span></kbd> - move note down in the note tree
|
||||
* <kbd>Shift</kbd>+<kbd><span>↑</span></kbd>, <kbd>Shift</kbd>`+`<kbd><span>↓</span></kbd> - multi-select note above/below
|
||||
* <kbd>Ctrl</kbd>+<kbd>A</kbd> - select all notes in the current level
|
||||
* <kbd>Shift</kbd>+<kbd>🖱 Left click</kbd> - multi select note which you clicked on
|
||||
* <kbd>Ctrl</kbd>+<kbd>C</kbd> - copies current note (or current selection) into clipboard (used for [cloning](Notes/Cloning%20Notes.md)
|
||||
* <kbd>Ctrl</kbd>+<kbd>X</kbd> - cuts current (or current selection) note into clipboard (used for moving notes)
|
||||
* <kbd>Ctrl</kbd>+<kbd>V</kbd> - pastes note(s) as sub-note into current note (which is either move or clone depending on whether it was copied or cut into clipboard)
|
||||
* <kbd>Del</kbd> - delete note / sub-tree
|
||||
|
||||
## Editing notes
|
||||
|
||||
Trilium uses CKEditor 5 for the [text notes](../Note%20Types/Text.md) and CodeMirror 5 for [code notes](../Note%20Types/Code.md). Check the documentation of these projects to see all their built-in keyboard shortcuts.
|
||||
|
||||
* <kbd>Alt</kbd>\-<kbd>F10</kbd> - bring up inline formatting toolbar (arrow keys <kbd><span>←</span></kbd>,<kbd><span>→</span></kbd> to navigate, <kbd>Enter</kbd> to apply)
|
||||
* <kbd>Alt</kbd>\-<kbd>F10</kbd> - again to bring up block formatting toolbar
|
||||
* <kbd>Enter</kbd> in tree pane switches from tree pane into note title. Enter from note title switches focus to text editor. <kbd>Ctrl</kbd>+<kbd>.</kbd> switches back from editor to tree pane.
|
||||
* <kbd>Ctrl</kbd>+<kbd>K</kbd> - create / edit [external link](../Note%20Types/Text/Links.md)
|
||||
* <kbd>Ctrl</kbd>+<kbd>L</kbd> - create [internal (note) link](../Note%20Types/Text/Links.md)
|
||||
* <kbd>Alt</kbd>+<kbd>T</kbd> - inserts current date and time at caret position
|
||||
* <kbd>Ctrl</kbd>+<kbd>.</kbd> - jump away from the editor to tree pane and scroll to current note
|
||||
|
||||
## Runtime shortcuts
|
||||
|
||||
These are hooked in Electron to be similar to native browser keyboard shortcuts.
|
||||
|
||||
* <kbd>F5</kbd>, <kbd>Ctrl</kbd>\-<kbd>R</kbd> - reloads Trilium front-end
|
||||
* <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>I</kbd> - show developer tools
|
||||
* <kbd>Ctrl</kbd>+<kbd>F</kbd> - show search dialog
|
||||
* <kbd>Ctrl</kbd>+<kbd>-</kbd> - zoom out
|
||||
* <kbd>Ctrl</kbd>+<kbd>=</kbd> - zoom in
|
||||
|
||||
## Other
|
||||
|
||||
* <kbd>Alt</kbd>+<kbd>O</kbd> - show SQL console (use only if you know what you're doing)
|
||||
* <kbd>Alt</kbd>+<kbd>M</kbd> - distraction-free mode - display only note editor, everything else is hidden
|
||||
* <kbd>F11</kbd> - toggle full screen
|
||||
* <kbd>Ctrl</kbd> + <kbd>S</kbd> - toggle [search](Navigation/Search.md) form in tree pane
|
||||
* <kbd>Alt</kbd> +<kbd>A</kbd> - show note [attributes](../Advanced%20Usage/Attributes.md) dialog
|
||||
|
After Width: | Height: | Size: 15 KiB |
@@ -0,0 +1,12 @@
|
||||
# Bookmarks
|
||||
To easily access selected notes, you can bookmark them. See demo:
|
||||
|
||||

|
||||
|
||||
## Bookmark folder
|
||||
|
||||
Space in the left panel is limited, and you might want to bookmark many items. One possible solution is to bookmark a folder, so it shows its children:
|
||||
|
||||

|
||||
|
||||
To do this, you need to add a `#bookmarkFolder` label to the note.
|
||||
@@ -0,0 +1,8 @@
|
||||
# Note Hoisting
|
||||
Hoisting is a standard outliner feature which allows you to focus on (or "zoom into") a specific note and its subtree by hiding all parent and sibling notes. Demo:
|
||||
|
||||

|
||||
|
||||
In addition to showing only this subtree, this also narrows both full text search and [“jump to note”](Note%20Navigation.md) to just notes present in hoisted subtree.
|
||||
|
||||
See also [Workspace](Workspace.md) which extends this feature.
|
||||
@@ -0,0 +1,26 @@
|
||||
# Note Navigation
|
||||
One of the Trilium's goals is to provide fast and comfortable navigation between notes.
|
||||
|
||||
## Backwards and forward
|
||||
|
||||
You can use alt-left and alt-right to move back and forward in history of viewed pages.
|
||||
|
||||
This works identically to browser backwards / forwards, it's actually using built-in browser support for this.
|
||||
|
||||

|
||||
|
||||
## Jump to note
|
||||
|
||||
This is useful to quickly find and view arbitrary note - click on `Jump to` button on the top or press <kbd>Ctrl</kbd> + <kbd>J</kbd> . Then type part of the note name and autocomplete will help you pick the desired note.
|
||||
|
||||

|
||||
|
||||
### Recent notes
|
||||
|
||||
Jump to note also has the ability to show the list of recently viewed / edited notes and quickly jump to it.
|
||||
|
||||
To access this functionality, click on `Jump to` button on the top. By default, (when nothing is entered into autocomplete), this dialog will show the list of recent notes.
|
||||
|
||||
Alternatively you can click on the "time" icon on the right.
|
||||
|
||||

|
||||
|
After Width: | Height: | Size: 36 KiB |
@@ -0,0 +1,137 @@
|
||||
# Search
|
||||
## Local Search
|
||||
|
||||
Local search allows you to search within the currently displayed note. To initiate a local search, press <kbd>Ctrl</kbd> + <kbd>F</kbd>. If using a web browser, this will be handled by the browser's native search functionality. In the desktop (electron) version, a separate dialog will apear.
|
||||
|
||||
## Note Search
|
||||
|
||||
Note search enables you to find notes by searching for text in the title, content, or [attributes](../../Advanced%20Usage/Attributes.md) of the notes. You also have the option to save your searches, which will create a special search note which is visible on your navigation tree and contains the search results as sub-items.
|
||||
|
||||
To search for notes, click on the magnifying glass icon on the toolbar or press the <kbd>Ctrl</kbd> + <kbd>S</kbd> keyboard [shortcut](../Keyboard%20Shortcuts.md).
|
||||
|
||||
### Simple Note Search Examples
|
||||
|
||||
* `rings tolkien`: Full-text search to find notes containing both "rings" and "tolkien".
|
||||
* `"The Lord of the Rings" Tolkien`: Full-text search where "The Lord of the Rings" must match exactly.
|
||||
* `note.content *=* rings OR note.content *=* tolkien`: Find notes containing "rings" or "tolkien" in their content.
|
||||
* `towers #book`: Combine full-text and attribute search to find notes containing "towers" and having the "book" label.
|
||||
* `towers #book or #author`: Search for notes containing "towers" and having either the "book" or "author" label.
|
||||
* `towers #!book`: Search for notes containing "towers" and not having the "book" label.
|
||||
* `#book #publicationYear = 1954`: Find notes with the "book" label and "publicationYear" set to 1954.
|
||||
* `#genre *=* fan`: Find notes with the "genre" label containing the substring "fan". Additional operators include `*=*` for "contains", `=*` for "starts with", `*=` for "ends with", and `!=` for "is not equal to".
|
||||
* `#book #publicationYear >= 1950 #publicationYear < 1960`: Use numeric operators to find all books published in the 1950s.
|
||||
* `#dateNote >= TODAY-30`: A "smart search" to find notes with the "dateNote" label within the last 30 days. Supported smart values include NOW +- seconds, TODAY +- days, MONTH +- months, YEAR +- years.
|
||||
* `~author.title *=* Tolkien`: Find notes related to an author whose title contains "Tolkien".
|
||||
* `#publicationYear %= '19[0-9]{2}'`: Use the '%=' operator to match a regular expression (regex). This feature has been available since Trilium 0.52.
|
||||
|
||||
### Advanced Use Cases
|
||||
|
||||
* `~author.relations.son.title = 'Christopher Tolkien'`: Search for notes with an "author" relation to a note that has a "son" relation to "Christopher Tolkien". This can be modeled with the following note structure:
|
||||
* Books
|
||||
* Lord of the Rings
|
||||
* label: “book”
|
||||
* relation: “author” points to “J. R. R. Tolkien” note
|
||||
* People
|
||||
* J. R. R. Tolkien
|
||||
* relation: “son” points to "Christopher Tolkien" note
|
||||
* Christopher Tolkien
|
||||
* `~author.title *= Tolkien OR (#publicationDate >= 1954 AND #publicationDate <= 1960)`: Use boolean expressions and parentheses to group expressions. Note that expressions starting with a parenthesis need an "expression separator sign" (# or ~) prepended.
|
||||
* `note.parents.title = 'Books'`: Find notes with a parent named "Books".
|
||||
* `note.parents.parents.title = 'Books'`: Find notes with a grandparent named "Books".
|
||||
* `note.ancestors.title = 'Books'`: Find notes with an ancestor named "Books".
|
||||
* `note.children.title = 'sub-note'`: Find notes with a child named "sub-note".
|
||||
|
||||
### Search with Note Properties
|
||||
|
||||
Notes have properties that can be used in searches, such as `noteId`, `dateModified`, `dateCreated`, `isProtected`, `type`, `title`, `text`, `content`, `rawContent`, `ownedLabelCount`, `labelCount`, `ownedRelationCount`, `relationCount`, `ownedRelationCountIncludingLinks`, `relationCountIncludingLinks`, `ownedAttributeCount`, `attributeCount`, `targetRelationCount`, `targetRelationCountIncludingLinks`, `parentCount`, `childrenCount`, `isArchived`, `contentSize`, `noteSize`, and `revisionCount`.
|
||||
|
||||
These properties can be accessed via the `note.` prefix, e.g., `note.type = code AND note.mime = 'application/json'`.
|
||||
|
||||
### Order by and Limit
|
||||
|
||||
```
|
||||
#author=Tolkien orderBy #publicationDate desc, note.title limit 10
|
||||
```
|
||||
|
||||
This example will:
|
||||
|
||||
1. Find notes with the author label "Tolkien".
|
||||
2. Order the results by `publicationDate` in descending order.
|
||||
3. Use `note.title` as a secondary ordering if publication dates are equal.
|
||||
4. Limit the results to the first 10 notes.
|
||||
|
||||
### Negation
|
||||
|
||||
Some queries can only be expressed with negation:
|
||||
|
||||
```
|
||||
#book AND not(note.ancestor.title = 'Tolkien')
|
||||
```
|
||||
|
||||
This query finds all book notes not in the "Tolkien" subtree.
|
||||
|
||||
## Under the Hood
|
||||
|
||||
### Label and Relation Shortcuts
|
||||
|
||||
The "full" syntax for searching by labels is:
|
||||
|
||||
```
|
||||
note.labels.publicationYear = 1954
|
||||
```
|
||||
|
||||
For relations:
|
||||
|
||||
```
|
||||
note.relations.author.title *=* Tolkien
|
||||
```
|
||||
|
||||
However, common label and relation searches have shortcut syntax:
|
||||
|
||||
```
|
||||
#publicationYear = 1954
|
||||
#author.title *=* Tolkien
|
||||
```
|
||||
|
||||
### Separating Full-Text and Attribute Parts
|
||||
|
||||
Search syntax allows combining full-text search with attribute-based search seamlessly. For example, `tolkien #book` contains:
|
||||
|
||||
1. Full-text tokens - `tolkien`
|
||||
2. Attribute expressions - `#book`
|
||||
|
||||
Trilium detects the separation between full text search and attribute/property search by looking for certain special characters or words that denote attributes and properties (e.g., #, ~, note.). If you need to include these in full-text search, escape them with a backslash so they are processed as regular text:
|
||||
|
||||
```
|
||||
"note.txt"
|
||||
\#hash
|
||||
#myLabel = 'Say "Hello World"'
|
||||
```
|
||||
|
||||
### Escaping Special Characters
|
||||
|
||||
Special characters can be enclosed in quotes or escaped with a backslash to be used in full-text search:
|
||||
|
||||
```
|
||||
"note.txt"
|
||||
\#hash
|
||||
#myLabel = 'Say "Hello World"'
|
||||
```
|
||||
|
||||
Three types of quotes are supported: single, double, and backtick.
|
||||
|
||||
### Type Coercion
|
||||
|
||||
Label values are technically strings but can be coerced for numeric comparisons:
|
||||
|
||||
```
|
||||
note.dateCreated =* '2019-05'
|
||||
```
|
||||
|
||||
This finds notes created in May 2019. Numeric operators like `#publicationYear >= 1960` convert string values to numbers for comparison.
|
||||
|
||||
## Auto-Trigger Search from URL
|
||||
|
||||
You can open Trilium and automatically trigger a search by including the search [url encoded](https://meyerweb.com/eric/tools/dencoder/) string in the URL:
|
||||
|
||||
`http://localhost:8080/#?searchString=abc`
|
||||
@@ -0,0 +1,24 @@
|
||||
# Tree Concepts
|
||||
This page explains the basic concepts related to the tree structure of notes in TriliumNext.
|
||||
|
||||
## Note
|
||||
|
||||
A note is the central entity in TriliumNext. For more details, see [Note](../Notes.md).
|
||||
|
||||
## Branch
|
||||
|
||||
A branch describes the placement of a note within the note tree. Essentially, it is a tuple of `parentNoteId` and `noteId`, indicating that the given note is placed as a child under the specified parent note.
|
||||
|
||||
Each note can have multiple branches, meaning any note can be placed in multiple locations within the tree. This concept is referred to as " [cloning](../Notes/Cloning%20Notes.md)."
|
||||
|
||||
## Prefix
|
||||
|
||||
A prefix is a branch-specific title modifier for a note. If you place your note in two different locations within the tree and want to alter the title slightly in one of those placements, you can use a prefix.
|
||||
|
||||
To edit a prefix, right-click on the note in the tree pane and select "Edit branch prefix."
|
||||
|
||||
The prefix is not part of the note itself and is not encrypted when the note is protected. This can be useful if you want part of the title to remain visible in the tree for easier navigation, even when the note is protected.
|
||||
|
||||
## Subtree
|
||||
|
||||
A subtree consists of a particular note (the subtree root) and all its children and descendants. Some operations, such as exporting, work on entire subtrees.
|
||||
@@ -0,0 +1,24 @@
|
||||
# Workspace
|
||||
Workspace is a concept built up on top of [note hoisting](Note%20Hoisting.md). It is based on the idea that a user has several distinct spheres of interest. An example might be "Personal" and "Work", these two spheres are quite distinct and don't interact together. When I focus on Work, I don't really care about personal notes.
|
||||
|
||||
So far workspace consists of these features:
|
||||
|
||||
* [note hoisting](Note%20Hoisting.md) - you can "zoom" into a workspace subtree to focus only on the relevant notes
|
||||
|
||||
* easy entering of workspace:
|
||||
|
||||

|
||||
|
||||
* visual identification of workspace in tabs:
|
||||

|
||||
|
||||
|
||||
### How to use workspaces
|
||||
|
||||
Let's say you have identified the workspaces and their subtrees. Define on the root of this subtree following labels:
|
||||
|
||||
* `#workspace` - Marks this note as a workspace, button to enter the workspace is controlled by this
|
||||
* `#workspaceIconClass` - controls the box icon to be displayed in the tree and tabs, example `bx bx-home`. See [https://boxicons.com/](https://boxicons.com/)
|
||||
* `#workspaceTabBackgroundColor` - Background color of the tab, use any CSS color format, e.g. "lightblue" or "#ddd". See [https://www.w3schools.com/cssref/css\_colors.asp](https://www.w3schools.com/cssref/css_colors.asp).
|
||||
* `#workspaceCalendarRoot` - marking a note with this label will define a new per-workspace calendar. If there's no such note, the global calendar will be used.
|
||||
* `#workspaceTemplate` - This note will appear in the selection of available templates when creating a new note, but only when you are currently hoisted into a workspace containing this template.
|
||||
|
After Width: | Height: | Size: 9.0 KiB |
@@ -0,0 +1,43 @@
|
||||
# Notes
|
||||
Note is a central entity in Trilium. Main attributes of note are title and content.
|
||||
|
||||
### Note types
|
||||
|
||||
* [text note](../Note%20Types/Text.md) - this is default note type which allows you to put rich text, images etc.
|
||||
* [code note](../Note%20Types/Code.md) - some kind of formal code, typically programming language (e.g. JavaScript) or data structure (e.g. JSON)
|
||||
* [image note](https://github.com/TriliumNext/Notes/wiki/Images) - represents single image
|
||||
* file note - represents uploaded file (e.g. docx MS Word document).
|
||||
* render HTML note - this works as an output screen of attached [scripts](../Note%20Types/Code/Scripts.md)
|
||||
* [saved search](../Note%20Types/Saved%20Search.md) note - contains saved search query and dynamically displays result of the search as its sub-notes
|
||||
* [relation map](../Note%20Types/Relation%20Map.md) note - visualizes notes and their relations
|
||||
* [book note](../Note%20Types/Book.md) - displays its children notes, useful for reading many short notes
|
||||
* mermaid - create diagrams and flowcharts using [mermaid.js ↗](https://github.com/mermaid-js/mermaid)
|
||||
* [canvas note](#root/fKYGY3OOo5d1) - allows hand drawn notes and basic diagraming on an infinite canvas using [excalidraw ↗](https://github.com/excalidraw/excalidraw)
|
||||
|
||||
In Trilium there's no specific "folder" note type. Any note can have children and thus be a folder.
|
||||
|
||||
### Root note
|
||||
|
||||
There's one special note called "root note" which is root of the note tree. All other notes are placed below it in the structure.
|
||||
|
||||
### Tree structure
|
||||
|
||||
Importantly, note itself doesn't carry information on its placement in note tree. See [cloning](Notes/Cloning%20Notes.md) for details.
|
||||
|
||||
Tree structure of notes can resemble file system - but compared to that notes in Trilium can act as both file and directory - meaning that note can both have its own content and have children. "Leaf note" is a note which doesn't have any children.
|
||||
|
||||
### Deleting / undeleting notes
|
||||
|
||||
When you delete a note in Trilium, it is actually only marked for deletion (soft-delete) - the actual content, title, attributes etc. are not deleted, only hidden.
|
||||
|
||||
Within (by default) 7 days, it is possible to undelete these soft-deleted notes - open Recent Changes dialog, and you will see a list of all modified notes including the deleted ones. Notes available for undeletion have a link to do so. This is kind of "trash can" functionality known from e.g. Windows.
|
||||
|
||||
Clicking an undelete will recover the note, it's content and attributes - note should be just as before being deleted. This action will also undelete note's children which have been deleted in the same action.
|
||||
|
||||
To be able to undelete a note, it is necessary that deleted note's parent must be undeleted (otherwise there's no place where we can undelete it to). This might become a problem when you delete more notes in succession - the solution is then undelete in the reverse order of your deletion.
|
||||
|
||||
After the 7 days (configurable) the notes will be "erased" - their title, content, revisions and attributes will be erased, and it will not be possible anymore to recover them (unless you restore [backup](../Installation%20%26%20Setup/Backup.md)).
|
||||
|
||||
## See also
|
||||
|
||||
* [Read-only note](Notes/Read-Only%20Notes.md)
|
||||
|
After Width: | Height: | Size: 340 B |
@@ -0,0 +1,10 @@
|
||||
# Archived Notes
|
||||
Archived notes are notes which have `archived` [attribute](../../Advanced%20Usage/Attributes.md) - either directly or [inherited](../../Advanced%20Usage/Attributes/Attribute%20Inheritance.md).
|
||||
|
||||
Such notes are then by default not shown in the autocomplete and in the full text [search](../Navigation/Search.md).
|
||||
|
||||
This can be useful for notes which are no longer very useful but still valuable enough to keep around without them getting too much in the way.
|
||||
|
||||
You can control whether archived notes are displayed in the note tree with a setting:
|
||||
|
||||

|
||||
@@ -0,0 +1,8 @@
|
||||
# Attachments
|
||||
A [note](../Notes.md) in Trilium can _own_ one or more attachments, which can be either images or files. These attachments can be displayed or linked within the note that owns them.
|
||||
|
||||
This can be especially useful to include dependencies for your [scripts](../../Note%20Types/Code/Scripts.md). The [Weight Tracker](../../Advanced%20Usage/Advanced%20Showcases/Weight%20Tracker.md) shows how to use [chartjs](https://chartjs.org/) which is attached to the [script note](#root/HcUYTojFohtb).
|
||||
|
||||
Each note exclusively owns its attachments, meaning attachments cannot be shared or linked from one note to another. If an attachment link is copied to a different note, the attachment itself is duplicated, and the copies are managed independently thereafter.
|
||||
|
||||
Attachments, especially image files, are the recommended method for embedding visuals in notes. It is important to link image attachments within the text of the owning note; otherwise, they will be automatically deleted after a configurable timeout period if not referenced.
|
||||
@@ -0,0 +1,66 @@
|
||||
# Cloning Notes
|
||||
## Motivation
|
||||
|
||||
Trilium's core feature is the ability to structure your notes into hierarchical tree-like structure.
|
||||
|
||||
It is expected then that you'll have an elaborate and deep note hierarchy - each subtree will represent a more refined and specialized view of your knowledge base.
|
||||
|
||||
This is a pretty powerful approach, but it also carries a hidden assumption that each "subtopic" is "owned" by one parent. I'll illustrate this with an example - let's say my basic structure is this:
|
||||
|
||||
* Technology
|
||||
* Programming
|
||||
* Kotlin
|
||||
* JavaScript
|
||||
* Operating systems
|
||||
* Linux
|
||||
* Windows
|
||||
|
||||
Now, I'm starting to learn about [Bash](https://en.wikipedia.org/wiki/Bash_\(Unix_shell\)) and would like to create notes related to this topic. But now I'm facing a problem of where to categorize this. The issue here is that Bash is both a programming language and a tool (shell) very much tied into Linux. It seems it belongs to both of these, I can't (and don't want to) choose one over the other.
|
||||
|
||||
## Solution
|
||||
|
||||
The solution to the problem shown above is to allow notes to have multiple parents.
|
||||
|
||||
I call these "clones", but that is a bit misleading - there's no original and cloned note - the notes in both of the parents categories are identical.
|
||||
|
||||
Another misleading thing about "cloning" is that it suggests that a copy of the note has been made. That's not really true, the note itself stays in just one original, it is just referenced in multiple places in the tree hierarchy. So changing it in one category changes it in all the others, because they're all the same note.
|
||||
|
||||
Here's the final structure with cloning:
|
||||
|
||||
* Technology
|
||||
* Programming
|
||||
* Kotlin
|
||||
* JavaScript
|
||||
* Bash
|
||||
* some sub-notes ...
|
||||
* Operating systems
|
||||
* Linux
|
||||
* Bash
|
||||
* some sub-notes ...
|
||||
* Windows
|
||||
|
||||
So now the "Bash" subtree appears on multiple locations in the hierarchy. Both the Bash subtrees are the same and contain the same sub-categories and notes.
|
||||
|
||||
### Demo
|
||||
|
||||

|
||||
|
||||
In the demo, you can see how a clone can be created using the context menu. It's possible to do this also using the Add Link dialog or with <kbd>Ctrl</kbd>+<kbd>C</kbd> and <kbd>Ctrl</kbd>+<kbd>V</kbd> [keyboard shortcuts](../Keyboard%20Shortcuts.md).
|
||||
|
||||
As seen in the demo, you can view the list of all available clones in the "Note Paths" tab in the Ribbon toolbar.
|
||||
|
||||
Titles of cloned notes in the tree view have an asterisk to the right to easily see that the note is also placed into some other location.
|
||||
|
||||
## Prefix
|
||||
|
||||
Since notes can be categorized into multiple places, it's recommended to choose a generalized name that fits into all locations instead of something more specific to avoid confusion. In some cases this isn't possible so Trilium provides "branch prefixes", which is shown before the note name in the tree and as such provides a specific kind of context. The prefix is location specific, so it's displayed only in the tree pane.
|
||||
|
||||
## Deleting notes/clones
|
||||
|
||||
With clones, it might not be immediately obvious how deleting works.
|
||||
|
||||
If you try to delete a note, it works like this:
|
||||
|
||||
1. if the note has multiple clones, delete just this clone and leave the actual note (and its other clones) as it is.
|
||||
2. if this note doesn't have any other clones, delete the note
|
||||
* Run the whole process starting with 1. on all note's children notes
|
||||
@@ -0,0 +1,24 @@
|
||||
# Export as PDF
|
||||

|
||||
|
||||
Screenshot of the note contextual menu indicating the “Export as PDF” option.
|
||||
|
||||
On the desktop application of Trilium it is possible to export a note as PDF. On the server or PWA (mobile), the option is not available due to technical constraints and it will be hidden.
|
||||
|
||||
To print a note, select the button to the right of the note and select _Export as PDF_.
|
||||
|
||||
Afterwards you will be prompted to select where to save the PDF file. Upon confirmation, the resulting PDF will be opened automatically using the default/system application configured for PDFs.
|
||||
|
||||
Should you encounter any visual issues in the resulting PDF file (e.g. a table does not fit properly, there is cut off text, etc.) feel free to [report the issue](#root/OeKBfN6JbMIq/jRV1MPt4mNSP/hrC6xn7hnDq5). In this case, it's best to offer a sample note (click on the button, select Export note → This note and all of its descendants → HTML in ZIP archive). Make sure not to accidentally leak any personal information.
|
||||
|
||||
## Landscape mode
|
||||
|
||||
When exporting to PDF, there are no customizable settings such as page orientation, size, etc. However, it is possible to specify a given note to be printed as a PDF in landscape mode by adding the `#printLandscape` attribute to it (see [\[missing note\]](#root/9QRytp0ZYFIf/PnO38wN0ffOA)).
|
||||
|
||||
## Page size
|
||||
|
||||
By default, the resulting PDF will be in Letter format. It is possible to adjust it to another page size via the `#printPageSize` attribute, with one of the following values: `A0`, `A1`, `A2`, `A3`, `A4`, `A5`, `A6`, `Legal`, `Letter`, `Tabloid`, `Ledger`.
|
||||
|
||||
## Keyboard shortcut
|
||||
|
||||
It's possible to trigger the export to PDF from the keyboard by going to _Keyboard shortcuts_ and assigning a key combination for the `exportAsPdf` action.
|
||||
|
After Width: | Height: | Size: 95 KiB |
@@ -0,0 +1,6 @@
|
||||
# Note Icons
|
||||
Icons are useful for distinguishing notes. At the technical level, they are set by the `iconClass` attribute which adds a CSS class to the note. For example `#iconClass="bx bx-calendar"` will show a calendar instead of the default page or folder icon. Looking up and remembering the css class names is not necessary. While editing a note, click on the icon next to the title to bring up a chooser gallery:
|
||||
|
||||

|
||||
|
||||

|
||||
@@ -0,0 +1,20 @@
|
||||
# Note Revisions
|
||||
Trilium supports seamless versioning of notes by storing snapshots ("revisions") of notes at regular intervals.
|
||||
|
||||
## Note Revisions Snapshot Interval
|
||||
|
||||
Time interval of taking note snapshot is configurable in the Options -> Other dialog. This provides a tradeoff between more revisions and more data to store.
|
||||
|
||||
To turn off note versioning for a particular note (or subtree), add `disableVersioning` [label](../../Advanced%20Usage/Attributes.md)to the note.
|
||||
|
||||
## Note Revision Snapshots Limit
|
||||
|
||||
The limit on the number of note snapshots can be configured in the Options -> Other dialog. The note revision snapshot number limit refers to the maximum number of revisions that can be saved for each note. Where -1 means no limit, 0 means delete all revisions. You can set the maximum revisions for a single note through the `versioningLimit=X` label.
|
||||
|
||||
The note limit will not take effect immediately; it will only apply when the note is modified.
|
||||
|
||||
You can click the **Erase excess revision snapshots now** button to apply the changes immediately.
|
||||
|
||||
Note revisions can be accessed through the button on the right of ribbon toolbar.
|
||||
|
||||

|
||||
@@ -0,0 +1,48 @@
|
||||
# Protected Notes
|
||||
Trilium is designed to store a wide variety of data, including sensitive information such as personal journals, credentials, or confidential documents. To safeguard this type of content, Trilium offers the option to protect notes, which involves the following measures:
|
||||
|
||||
* **Encryption:** Protected notes are encrypted using a key derived from your password. This ensures that without the correct password, protected notes remain indecipherable. Even if someone gains access to your Trilium [database](../../Advanced%20Usage/Database.md), they won't be able to read your encrypted notes.
|
||||
* **Time-limited access:** To access protected notes, you must first enter your password, which decrypts the note for reading and writing. However, after a specified period of inactivity (10 minutes by default), the note is unloaded from memory, requiring you to re-enter your password to access it again.
|
||||
* The session timeout is extended automatically while you're interacting with the protected note, so if you're actively editing, the session remains open. However, if you switch to an unprotected note, the session timer starts, and the session expires after 10 minutes of inactivity unless you return to the protected notes.
|
||||
* **Protection scope:** Protected notes ensure the confidentiality of their content and partially their integrity. While unauthorized users cannot read or edit protected notes, they can still delete or move them outside of the protected session.
|
||||
|
||||
## Using Protected Notes
|
||||
|
||||
By default, notes are unprotected. To protect a note, simply click on the shield icon next to the note's title, as shown here:
|
||||
|
||||

|
||||
|
||||
## What is Encrypted?
|
||||
|
||||
Trilium encrypts the data within protected notes but not their metadata. Specifically:
|
||||
|
||||
**Encrypted:**
|
||||
|
||||
* Note title
|
||||
* Note content
|
||||
* Images
|
||||
* File attachments
|
||||
|
||||
**Not encrypted:**
|
||||
|
||||
* Note structure (i.e., it remains visible that there are protected notes)
|
||||
* Metadata, such as the last modified date
|
||||
* [Attributes](../../Advanced%20Usage/Attributes.md)
|
||||
|
||||
## Encryption Details
|
||||
|
||||
The following steps outline how encryption and decryption work in Trilium:
|
||||
|
||||
1. The user enters a password.
|
||||
2. The password is passed through the [scrypt](https://en.wikipedia.org/wiki/Scrypt) algorithm along with a "password verification" [salt](https://en.wikipedia.org/wiki/Salt_\(cryptography\)) to confirm that the password is correct.
|
||||
3. The password is then processed again through scrypt with an "encryption" salt, which generates a hash.
|
||||
* Scrypt is used for [key stretching](https://en.wikipedia.org/wiki/Key_stretching) to make the password harder to guess.
|
||||
4. The generated hash is used to decrypt the actual _data encryption key_.
|
||||
* The data encryption key is encrypted using [AES-128](https://en.wikipedia.org/wiki/Advanced_Encryption_Standard) with a random [IV](https://en.wikipedia.org/wiki/Initialization_vector).
|
||||
* The data encryption key is randomly generated during the [database](../../Advanced%20Usage/Database.md) initialization and remains constant throughout the document’s lifetime. When the password is changed, only this key is re-encrypted.
|
||||
5. The data encryption key is then used to decrypt the actual content of the note, including its title and body.
|
||||
* The encryption algorithm used is AES-128 with [CBC mode](https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation), where a unique IV is generated for each encryption operation and stored with the cipher text.
|
||||
|
||||
## Sharing Protected Notes
|
||||
|
||||
Protected notes cannot be shared in the same way as regular notes. Their encryption ensures that only authorized users with the correct password can access them.
|
||||
@@ -0,0 +1,12 @@
|
||||
# Read-Only Notes
|
||||
Both [text](../../Note%20Types/Text.md) and [code](../../Note%20Types/Code.md) notes in Trilium can be set to read-only. When a note is in read-only mode, it is presented to the user in a non-editable view, with the option to switch to editing mode if needed.
|
||||
|
||||
## Setting Read-Only Mode with a Label
|
||||
|
||||
To set a note as read-only, add the `readOnly` [label](../../Advanced%20Usage/Attributes.md) to the note.
|
||||
|
||||
## Automatic Read-Only Mode
|
||||
|
||||
For optimization purposes, Trilium will automatically set very large notes to read-only. Displaying such lengthy notes in editing mode can slow down performance, especially when editing is unnecessary.
|
||||
|
||||
If you want to ensure that a specific note remains editable regardless of its size, you can add the `autoReadOnlyDisabled` [label](../../Advanced%20Usage/Attributes.md) to the note.
|
||||
@@ -0,0 +1,24 @@
|
||||
# Sorting Notes
|
||||
## Sorting Notes
|
||||
|
||||
You can sort notes by right-clicking the parent note in the note tree and selecting Advanced -> Sort notes by ... This will sort existing notes, but will not automatically sort future notes added to this parent note
|
||||
|
||||
## Automatic/Permanent Sorting
|
||||
|
||||
Child notes can be automatically sorted by attaching specific [labels](../../Advanced%20Usage/Attributes.md) to the parent note:
|
||||
|
||||
* `#sorted`: Enables sorting. Can optionally include the name of the note's property/label for sorting criteria (details below).
|
||||
* `#sortDirection`: By default, sorting is ascending. Set this to `desc` to sort in descending order.
|
||||
* `#sortFoldersFirst`: Notes with children will be sorted to the top.
|
||||
|
||||
Sorting is done by comparing note properties or specific labels on child notes. There are four sorting levels, with the first having the highest priority. Lower priority levels are applied only if higher priority comparisons result in equality.
|
||||
|
||||
1. **Top Label Sorting**: Child notes with the `#top` label will appear at the top of the folder.
|
||||
2. **Bottom Label Sorting**: (Introduced in Trilium 0.62) Child notes with the `#bottom` label will appear at the bottom of the folder.
|
||||
3. **Property/Label-Based Sorting**: Sorting is based on the parent note's `#sorted` label:
|
||||
* **Default Sorting**: If `#sorted` has no value, notes are sorted alphabetically.
|
||||
* **Property Sorting**: If `#sorted` is set to `title`, `dateModified`, or `dateCreated`, notes are sorted based on the specified property.
|
||||
* **Label Sorting**: If `#sorted` has any other value, this value is treated as the name of a child note's label, and sorting is based on the values of this label. For example, setting `#sorted=myOrder` on the parent note and using `#myOrder=001`, `#myOrder=002`, etc., on child notes.
|
||||
4. **Alphabetical Sorting**: Used as a last resort when other criteria result in equality.
|
||||
|
||||
All comparisons are made string-wise (e.g., "1" < "2" or "2020-10-10" < "2021-01-15", but also "2" > "10").
|
||||
132
docs/User Guide/User Guide/Basic Concepts and Features/Themes.md
Normal file
@@ -0,0 +1,132 @@
|
||||
# Themes
|
||||
## Default Themes
|
||||
|
||||
Trilium comes with a couple pre-installed color themes, with the default being a light theme. To switch to a dark theme or any other available theme, navigate to the Options menu (accessible via the app icon in the top-left corner), select the Appearance tab, and choose your preferred theme.
|
||||
|
||||

|
||||
|
||||
## Creating Custom CSS Themes
|
||||
|
||||
Trilium supports custom user themes, allowing you to personalize the application's appearance. To create a custom theme, follow these steps:
|
||||
|
||||
1. **Create a CSS Code Note**: Start by creating a new [code note](../Note%20Types/Code.md) with the `CSS` type.
|
||||
2. **Annotate with** `**#appTheme**`: Add the [attribute](../Advanced%20Usage/Attributes.md) `#appTheme=my-theme-name` to your note, where `my-theme-name` is the name of your custom theme.
|
||||
3. **Define Your Styles**: Write your custom CSS within the note. Below is an example of a custom theme:
|
||||
|
||||
```
|
||||
@font-face {
|
||||
font-family: 'Raleway';
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
src: url('/custom/fonts/raleway.woff2') format('woff2');
|
||||
}
|
||||
|
||||
:root {
|
||||
--main-font-family: 'Raleway' !important;
|
||||
--main-font-size: normal;
|
||||
--tree-font-family: inherit;
|
||||
--tree-font-size: normal;
|
||||
--detail-font-family: inherit;
|
||||
--detail-font-size: normal;
|
||||
--detail-text-font-family: 'Garamond' !important;
|
||||
|
||||
--main-background-color: #404552;
|
||||
--main-text-color: #AFB8C6;
|
||||
--main-border-color: #AFB8C6;
|
||||
--accented-background-color: #383C4A;
|
||||
--more-accented-background-color: #2F343F;
|
||||
--header-background-color: #383C4A;
|
||||
--button-background-color: #2F343F;
|
||||
--button-disabled-background-color: #404552;
|
||||
--button-border-color: #333;
|
||||
--button-text-color: #AFB8C6;
|
||||
--button-border-radius: 2px;
|
||||
--primary-button-background-color: #6c757d;
|
||||
--primary-button-text-color: white;
|
||||
--primary-button-border-color: #6c757d;
|
||||
--muted-text-color: #86919F;
|
||||
--input-text-color: #AFB8C6;
|
||||
--input-background-color: #404552;
|
||||
--hover-item-text-color: white;
|
||||
--hover-item-background-color: #4877B1;
|
||||
--active-item-text-color: white;
|
||||
--active-item-background-color: #4877B1;
|
||||
--menu-text-color: #AFB8C6;
|
||||
--menu-background-color: #383C4A;
|
||||
--tooltip-background-color: #383C4A;
|
||||
--link-color: lightskyblue;
|
||||
--modal-background-color: #404552;
|
||||
--modal-backdrop-color: black;
|
||||
--scrollbar-border-color: rgba(175, 184, 198, 0.5);
|
||||
}
|
||||
|
||||
body .note-detail-text {
|
||||
font-size: 120%;
|
||||
}
|
||||
|
||||
body .CodeMirror {
|
||||
filter: invert(100%) hue-rotate(180deg);
|
||||
}
|
||||
```
|
||||
|
||||
### Activating Your Custom Theme
|
||||
|
||||
Once you've created your custom theme:
|
||||
|
||||
1. Go to "Menu" -> "Options" -> "Appearance."
|
||||
2. In the theme selection dropdown, you should see your custom theme listed under the name you provided with the `#appTheme` [label](../Advanced%20Usage/Attributes.md).
|
||||
3. Select your custom theme to activate it.
|
||||
|
||||
If you make changes to your theme, press <kbd>Ctrl</kbd> + <kbd>R</kbd> to reload the frontend and apply your updates.
|
||||
|
||||
### Sharing and Importing Themes
|
||||
|
||||
Custom themes can be exported as `.tar` archives, which can be shared with other users. However, be cautious when importing themes from untrusted sources, as they may contain executable scripts that could pose security risks.
|
||||
|
||||
An example user theme, _Steel Blue_, is available in the [demo document](#root/xjSsCcvVZf6H).
|
||||
|
||||

|
||||
|
||||
### Using Custom CSS for Specific Purposes
|
||||
|
||||
In addition to full themes, Trilium allows for custom CSS that isn't tied to a theme. This can be particularly useful in scripting contexts, where you might want to modify specific UI elements, such as changing the colors of notes in the tree view.
|
||||
|
||||
### Applying Custom CSS
|
||||
|
||||
To use custom CSS:
|
||||
|
||||
1. **Create a CSS Code Note**: Create a new [code note](../Note%20Types/Code.md) with the `CSS` type.
|
||||
2. **Add the** `**appCss**` **Label**: Annotate the note with the `#appCss` [label](../Advanced%20Usage/Attributes.md).
|
||||
3. **Write Your CSS**: Add your custom CSS rules to the note.
|
||||
|
||||
For example:
|
||||
|
||||
```
|
||||
/* Custom CSS to style specific elements */
|
||||
.tree-item {
|
||||
color: #ff6347; /* Change tree item color */
|
||||
}
|
||||
```
|
||||
|
||||
When Trilium's frontend starts, all notes labeled with `appCss` are automatically included in the style element of the HTML page.
|
||||
|
||||
After making changes, press <kbd>Ctrl</kbd> + <kbd>R</kbd> to reload the frontend and apply your new styles.
|
||||
|
||||

|
||||
|
||||
### Styling Specific Notes in the Tree
|
||||
|
||||
To apply specific styles to certain notes in the tree:
|
||||
|
||||
* **Use the** `**cssClass**` **Attribute**: Add the `cssClass` [attribute](../Advanced%20Usage/Attributes.md) to a note, and assign it a value representing the desired CSS class.
|
||||
* **Define an** `**iconClass**`: You can also define a custom icon for a note using the `iconClass` attribute, selecting from [Box Icons](https://boxicons.com) or your own custom classes.
|
||||
|
||||
For example, if you want to style notes of a specific type, such as notes containing PNG images, you can target them with classes like `type-image mime-image-png`.
|
||||
|
||||
### User-Provided Themes
|
||||
|
||||
A gallery of user-created themes is available, showcasing the variety of customizations that the Trilium community has developed. For more information, visit the [Theme Gallery](Themes/Theme%20Gallery.md).
|
||||
|
||||
### Asset Path Management
|
||||
|
||||
When referencing built-in assets like images in your custom themes or CSS, you can avoid hardcoding version numbers by using the `vX` alias. For example, instead of specifying `/assets/v0.57.0-beta/images/icon-grey.png`, you can use `/assets/vX/images/icon-grey.png` to keep your theme compatible with future versions of Trilium.
|
||||
@@ -0,0 +1,29 @@
|
||||
# Theme Gallery
|
||||
These are user-created themes which were made publicly available:
|
||||
|
||||
## Legacy Themes
|
||||
|
||||
These themes may or may not be compatible with the latest versions of TriliumNext and are based on the original/legacy theme.
|
||||
|
||||
| Theme | Author |
|
||||
| --- | --- |
|
||||
| [Midnight](https://github.com/tobealive/trilium-midnight-theme) | [tobealive](https://github.com/tobealive) |
|
||||
| [EOTE](https://github.com/tobealive/trilum-eote-theme) | [tobealive](https://github.com/tobealive) |
|
||||
| [Trilium Themes](https://github.com/Abourass/TriliumThemes) | [Abourass](https://github.com/Abourass) |
|
||||
| [MaterialDark](https://github.com/ZMonk91/Material-Dark-Trilium) | [ZMonk91](https://github.com/ZMonk91) |
|
||||
| [lightslategray](https://github.com/jaroet/trilium-theme-lightslategray) | [jaroet](https://github.com/jaroet) |
|
||||
| [melon-4](https://github.com/raphwriter/trilium-theme-melon) | [raphwriter](https://github.com/raphwriter) |
|
||||
| [Neon\_Dark](https://github.com/Engr-AllanG/trilium-themes) | [Engr-AllanG](https://github.com/Engr-AllanG) |
|
||||
| [Coder\_Dark](https://github.com/Engr-AllanG/trilium-themes) | [Engr-AllanG](https://github.com/Engr-AllanG) |
|
||||
| [velvet](https://github.com/idelem/trilium-theme-velvet) | [idelem](https://github.com/idelem) |
|
||||
| [Dark Plus](https://github.com/SADAVA/trilium-notes-theme-dark-plus) | [SADAVA](https://github.com/SADAVA) |
|
||||
| [Solarized](https://github.com/WKSu/trilium-solarized-theme) | [WKSu](https://github.com/WKSu) |
|
||||
| [Nord](https://github.com/en3r0/Trilium-Nord-Theme) | [en3r0](https://github.com/en3r0) |
|
||||
| [Bear Note Light](https://github.com/AllanZyne/trilium-bear-theme) | [AllanZyne](https://github.com/AllanZyne) |
|
||||
| [Bear Note Dark](https://github.com/AllanZyne/trilium-bear-theme) | [AllanZyne](https://github.com/AllanZyne) |
|
||||
| [Miku Hatsune](https://github.com/Sebiann/miku-hatsune-trilium-theme) | [Sebiann](https://github.com/Sebiann) |
|
||||
| [Midnight](https://github.com/cwilliams5/Midnight-Trilium-Dark-Mode) | [cwilliams5](https://github.com/cwilliams5) |
|
||||
| [Blue](https://github.com/SiriusXT/trilium-theme-blue) (light) | [SiriusXT](https://github.com/SiriusXT) |
|
||||
| [Blue](https://github.com/SiriusXT/trilium-theme-blue) (dark) | [SiriusXT](https://github.com/SiriusXT) |
|
||||
|
||||
If you would like to add your theme to this gallery, write a new post in [👐 Show and tell](https://github.com/TriliumNext/Notes/discussions/categories/show-and-tell).
|
||||
|
After Width: | Height: | Size: 62 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 327 B |
|
After Width: | Height: | Size: 81 KiB |
|
After Width: | Height: | Size: 79 KiB |
|
After Width: | Height: | Size: 780 B |
|
After Width: | Height: | Size: 367 B |
@@ -0,0 +1,8 @@
|
||||
# Global menu
|
||||
The global menu configures the current window (zoom, keeping the window on top) and offers access to some more advanced options.
|
||||
|
||||

|
||||
|
||||
## Accessing the global menu
|
||||
|
||||
See [Vertical and horizontal layout](Vertical%20and%20horizontal%20layout.md) since the position of the global menu is changed based on which layout has been selected.
|
||||
|
After Width: | Height: | Size: 13 KiB |
@@ -0,0 +1,65 @@
|
||||
# Launch Bar
|
||||
## Position of the Launch bar
|
||||
|
||||
Depending on the layout selected, the launcher bar will either be on the left side of the screen with buttons displayed vertically or at the top of the screen. See [Vertical and horizontal layout](Vertical%20and%20horizontal%20layout.md) for more information.
|
||||
|
||||
## Terminology
|
||||
|
||||
* **Launcher**: a button that can be (or is) displayed on the launch bar.
|
||||
* **Available Launcher**: a launcher that is not displayed on the launch bar, but can be added.
|
||||
* **Visible Launcher**: a launcher that is currently displayed on the launch bar.
|
||||
|
||||
## Configuring the Launch bar
|
||||
|
||||
There are two ways to configure the launch bar:
|
||||
|
||||
* Right click in the empty space between launchers on the launch bar and select _Configure Launchbar._
|
||||
* Click on the [Global menu](Global%20menu.md) and select _Configure Launchbar_.
|
||||
|
||||
This will open a new tab with the [Note Tree](Note%20Tree.md) listing the launchers.
|
||||
|
||||

|
||||
|
||||
Expanding _Available Launchers_ section will show the list of launchers that are not displayed on the launch bar. The _Visible Launchers_ will show the ones that are currently displayed.
|
||||
|
||||
### Adding/removing and reordering launchers
|
||||
|
||||
To display a new launcher in the launch bar, first look for it in the _Available Launchers_ section. Then right click it and select _Move to visible launchers_. It is also possible to drag and drop the item manually.
|
||||
|
||||
Similarly, to remove it from the launch bar, simply look for it in _Visible Launchers_ then right click it and select _Move to available launchers_ or use drag-and-drop.
|
||||
|
||||
Drag-and-drop the items in the tree in order to change their order. See [Note Tree](Note%20Tree.md) for more interaction options, including using keyboard shortcuts.
|
||||
|
||||
## Customizing the launcher
|
||||
|
||||
* The icon of a launcher can be changed just like a normal note. See [Note Icons](../Notes/Note%20Icons.md) for more information.
|
||||
* The title of the launcher can also be changed.
|
||||
|
||||
### Resetting
|
||||
|
||||
Resetting allows restoring the original configuration of Trilium for the launcher bar, or for a portion of it. Simply right click a launcher (or even the entire _Launch Bar_ section) and select _Reset_ to bring it back to the original state.
|
||||
|
||||
### Creating new launchers / types of launchers
|
||||
|
||||
Right click either the _Available launchers_ or _Visible launchers_ sections and select one of the options:
|
||||
|
||||
1. **Note Launcher**
|
||||
A note launcher will simply navigate to a specified note.
|
||||
|
||||
1. Set the `target` promoted attribute to the note to navigate to.
|
||||
2. Optionally, set `hoistedNote` to hoist a particular note. See [Note Hoisting](../Navigation/Note%20Hoisting.md) for more information.
|
||||
3. Optionally, set a `keyboardShortcut` to trigger the launcher.
|
||||
2. **Script Launcher**
|
||||
An advanced launcher which will run a script upon pressing. See [Scripts](../../Note%20Types/Code/Scripts.md) for more information.
|
||||
|
||||
1. Set `script` to point to the desired script to run.
|
||||
2. Optionally, set a `keyboardShortcut` to trigger the launcher.
|
||||
3. **Custom Widget**
|
||||
|
||||
Allows defining a custom widget to be rendered inside the launcher. See [Widget Basics](../../Developer%20Guides/Widget%20Basics.md) for more information.
|
||||
|
||||
4. **Spacers**
|
||||
Launchers that create some distance between other launchers for better visual distinction.
|
||||
|
||||
|
||||
Launchers are configured via predefined [Promoted Attributes](../../Advanced%20Usage/Attributes/Promoted%20Attributes.md).
|
||||
|
After Width: | Height: | Size: 5.4 KiB |
@@ -0,0 +1,33 @@
|
||||
# Note Tree
|
||||
This page explains how to manipulate the note tree in TriliumNext, focusing on moving notes.
|
||||
|
||||

|
||||
|
||||
## Drag and Drop
|
||||
|
||||

|
||||
|
||||
You can easily rearrange the note tree by dragging and dropping notes, as demonstrated in the example above.
|
||||
|
||||
## Keyboard Manipulation
|
||||
|
||||
Trilium offers efficient keyboard-based manipulation using the following [shortcuts](../Keyboard%20Shortcuts.md):
|
||||
|
||||
* <kbd>Ctrl</kbd> + <kbd><span>↑</span></kbd> and <kbd>Ctrl</kbd> +<kbd><span>↓</span></kbd>: Move the note up or down in the order.
|
||||
* <kbd>Ctrl</kbd>+<kbd><span>←</span></kbd>: Move the note up in the hierarchy by changing its parent to the note's grandparent.
|
||||
* <kbd>Ctrl</kbd>+<kbd><span>→</span></kbd>: Move the note down in the hierarchy by setting its parent to the note currently above it (this action is best understood through a demo or hands-on experience).
|
||||
* <kbd><span>←</span></kbd> and <kbd><span>→</span></kbd>: Expand and collapse a sub-tree.
|
||||
|
||||
## Context Menu
|
||||
|
||||
You can also move notes using the familiar cut and paste functions available in the context menu, or with the associated keyboard [shortcuts](../Keyboard%20Shortcuts.md): `CTRL-C` ( [copy](../Notes/Cloning%20Notes.md)), <kbd>Ctrl</kbd> + <kbd>X</kbd> (cut) and <kbd>Ctrl</kbd> + <kbd>V</kbd> (paste).
|
||||
|
||||
## Multiple selection
|
||||
|
||||
It is possible to select multiple notes at one time.
|
||||
|
||||
To do so, first select the note to start the selection with. Then hold Shift and click on the note to end the selection with. All the notes between the start and the end note will be selected as well.
|
||||
|
||||

|
||||
|
||||
In the right-click menu, operations such as Cut, Copy, Move to, Clone to or Delete will apply to all the selected notes. It is also possible to apply [Bulk actions](../../Advanced%20Usage/Bulk%20actions.md) to them. The rest of the options will not be available and will appear disabled in the menu.
|
||||
|
After Width: | Height: | Size: 7.3 KiB |
@@ -0,0 +1,5 @@
|
||||
# Note buttons
|
||||
To the right of the [Ribbon](Ribbon.md) there are a few more buttons: 
|
||||
|
||||
* The Note Revisions button displays the [Note Revisions](../Notes/Note%20Revisions.md) for that particular note.
|
||||
* The contextual menu offers commands for the note or its subtree, such as import, export, viewing the [Note source code](../../Advanced%20Usage/Note%20source.md) or [Attachments](../Notes/Attachments.md).
|
||||
|
After Width: | Height: | Size: 941 B |
@@ -0,0 +1,8 @@
|
||||
# Ribbon
|
||||

|
||||
|
||||
The ribbon allows changing options, attributes and viewing information about the current note.
|
||||
|
||||
## Settings
|
||||
|
||||
It is possible to change whether some ribbon items will be automatically open when navigating to a new note. To do so, in [Settings](Options.md), go to _Appearance_ and look for the _Ribbon widgets_ section.
|
||||
|
After Width: | Height: | Size: 23 KiB |
|
After Width: | Height: | Size: 188 B |
@@ -0,0 +1,34 @@
|
||||
# Vertical and horizontal layout
|
||||
## Layouts
|
||||
|
||||
Trilium supports two different layouts, based on your preference.
|
||||
|
||||
### Vertical layout
|
||||
|
||||
The vertical layout is Trilium's original layout:
|
||||
|
||||
* The [Launcher Bar](Launch%20Bar.md) is positioned on the left side of the screen, with buttons being laid out vertically.
|
||||
* The tab bar is at the top, but to the right of the [Note Tree](Note%20Tree.md).
|
||||
* The [Quick search](Quick%20search.md) is at the top of the [Note Tree](Note%20Tree.md).
|
||||
* The [Note Tree](Note%20Tree.md) can be collapsed by pressing the  button at the bottom of the [Launcher Bar](Launch%20Bar.md).
|
||||
* The [Global menu](Global%20menu.md) can be accessed via the  icon at the top of the [Launcher Bar](Launch%20Bar.md).
|
||||
|
||||

|
||||
|
||||
### Horizontal layout
|
||||
|
||||
The horizontal layout is a more traditional layout, since it bears similarity with other applications. In this mode:
|
||||
|
||||
* The [Launcher Bar](Launch%20Bar.md) is at the top of the screen, with the buttons laid horizontally.
|
||||
* The tab bar is at the top of the screen, but now covers the entirety of the width, allowing for more tabs to be displayed at once.
|
||||
* The [Quick search](Quick%20search.md) is now part of the [Launcher Bar](Launch%20Bar.md). It can be moved around according to preference and even removed if needed.
|
||||
* The [Note Tree](Note%20Tree.md) can be collapsed by pressing the small  button to the left of the first tab.
|
||||
* The [Global menu](Global%20menu.md) can be accessed via the  button at the end of the [Launcher Bar](Launch%20Bar.md).
|
||||
|
||||

|
||||
|
||||
## Changing the layout
|
||||
|
||||
Go to [Settings](#root/_hidden/_lbRoot/_lbVisibleLaunchers/_lbSettings) and look for the _Appearance_ option on the left. Then look for the _Layout_ section, where there is the possibility to switch between the two available layouts.
|
||||
|
||||
Selecting an option will immediately apply the new layout by reloading the window.
|
||||
@@ -0,0 +1,34 @@
|
||||
# Zen mode
|
||||

|
||||
|
||||
Screenshot of Zen Mode activated on a Windows 11 system with native title bar off and background effects on.
|
||||
|
||||
When Zen Mode is activated (pictured on the side), most of the user interface of Trilium is hidden away in order to be able to focus on the content, whether it's for reading or writing.
|
||||
|
||||

|
||||
|
||||
Screenshot of the Zen Mode option in the global menu.
|
||||
|
||||
## Activating & deactivating
|
||||
|
||||
The Zen Mode can be activated by accessing the global menu and selecting the “Zen Mode” option:
|
||||
|
||||
Aside from the global menu, it's also possible to activate this mode by using a keyboard shortcut (which is <kbd>F9</kbd> since TriliumNext 0.92.5 and <kbd>Alt</kbd>+<kbd>Z</kbd> for older versions). Look for `toggleZenMode` in the shortcut configuration.
|
||||
|
||||
Once Zen Mode is activated, all the UI elements of the application will be hidden away, including the global menu. In that case, the Zen Mode can be deactivated either by pressing the  icon in the top-right corner of the window or by pressing the keyboard combination again.
|
||||
|
||||
Do note that, by design, activating or deactivating the Zen Mode applies only to the current window. Restarting the application will also disable the Zen Mode.
|
||||
|
||||
## Moving the window around
|
||||
|
||||
If “Native title bar” is activated, then the operating system's default title bar can be used to drag the window around. If deactivated, the window can still be moved by dragging the mouse across the top part of the window where the note titles are.
|
||||
|
||||

|
||||
|
||||
Screenshot of two notes side-by-side while Zen Mode is active, on Windows 11 with background effects off.
|
||||
|
||||
## Split windows and tabs
|
||||
|
||||
Tabs are completely hidden, however it's still possible to use keyboard shortcuts such as `firstTab` (<kbd>Ctrl</kbd>+<kbd>1</kbd> by default), `secondTab` (<kbd>Ctrl</kbd>+<kbd>2</kbd> by default). There are also some newer shortcuts such as `activateNextTab` (<kbd>Ctrl</kbd>+<kbd>Tab</kbd>) or `activatePreviousTab` (<kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>Tab</kbd>) that allow easy navigation, however make sure that they are configured properly in the settings.
|
||||
|
||||
For the split view of notes, there are no keyboard shortcuts at the time of writing, but it's still possible to have them in Zen Mode by creating the split while the Zen Mode is off and then reactivating it afterwards.
|
||||
|
After Width: | Height: | Size: 1.0 KiB |