Merge branch 'develop' into chore_lint-share
@ -5,7 +5,6 @@
|
||||
.prettier*
|
||||
electron*
|
||||
entitlements.plist
|
||||
forge.config.cjs
|
||||
nodemon.json
|
||||
renovate.json
|
||||
trilium.iml
|
||||
@ -34,4 +33,10 @@ npm-debug.log
|
||||
|
||||
|
||||
# exceptions
|
||||
!/bin/copy-dist.ts
|
||||
!/bin/copy-dist.ts
|
||||
|
||||
# temporary exception to make copy-dist inside Docker build not fail
|
||||
# TriliumNextTODO: make copy-dist *not* requiring to copy this file for builds other than electron-forge
|
||||
!forge.config.cjs
|
||||
!/bin/tpl
|
||||
!/bin/electron-forge/desktop.ejs
|
18
.github/actions/build-electron/action.yml
vendored
@ -18,7 +18,7 @@ runs:
|
||||
# Certificate setup
|
||||
- name: Import Apple certificates
|
||||
if: inputs.os == 'macos'
|
||||
uses: apple-actions/import-codesign-certs@v3
|
||||
uses: apple-actions/import-codesign-certs@v4
|
||||
with:
|
||||
p12-file-base64: ${{ env.APPLE_APP_CERTIFICATE_BASE64 }}
|
||||
p12-password: ${{ env.APPLE_APP_CERTIFICATE_PASSWORD }}
|
||||
@ -27,7 +27,7 @@ runs:
|
||||
|
||||
- name: Install Installer certificate
|
||||
if: inputs.os == 'macos'
|
||||
uses: apple-actions/import-codesign-certs@v3
|
||||
uses: apple-actions/import-codesign-certs@v4
|
||||
with:
|
||||
p12-file-base64: ${{ env.APPLE_INSTALLER_CERTIFICATE_BASE64 }}
|
||||
p12-password: ${{ env.APPLE_INSTALLER_CERTIFICATE_PASSWORD }}
|
||||
@ -97,7 +97,7 @@ runs:
|
||||
shell: bash
|
||||
run: |
|
||||
echo "Signing DMG file..."
|
||||
dmg_file=$(find out -name "*.dmg" -print -quit)
|
||||
dmg_file=$(find ./dist -name "*.dmg" -print -quit)
|
||||
if [ -n "$dmg_file" ]; then
|
||||
echo "Found DMG: $dmg_file"
|
||||
# Get the first valid signing identity from the keychain
|
||||
@ -125,7 +125,7 @@ runs:
|
||||
|
||||
# First check the .app bundle
|
||||
echo "Looking for .app bundle..."
|
||||
app_bundle=$(find out -name "*.app" -print -quit)
|
||||
app_bundle=$(find ./dist -name "*.app" -print -quit)
|
||||
if [ -n "$app_bundle" ]; then
|
||||
echo "Found app bundle: $app_bundle"
|
||||
echo "Verifying app bundle signing..."
|
||||
@ -144,7 +144,7 @@ runs:
|
||||
|
||||
# Then check DMG if it exists
|
||||
echo "Looking for DMG..."
|
||||
dmg_file=$(find out -name "*.dmg" -print -quit)
|
||||
dmg_file=$(find ./dist -name "*.dmg" -print -quit)
|
||||
if [ -n "$dmg_file" ]; then
|
||||
echo "Found DMG: $dmg_file"
|
||||
echo "Verifying DMG signing..."
|
||||
@ -160,7 +160,7 @@ runs:
|
||||
|
||||
# Finally check ZIP if it exists
|
||||
echo "Looking for ZIP..."
|
||||
zip_file=$(find out -name "*.zip" -print -quit)
|
||||
zip_file=$(find ./dist -name "*.zip" -print -quit)
|
||||
if [ -n "$zip_file" ]; then
|
||||
echo "Found ZIP: $zip_file"
|
||||
echo "Note: ZIP files are not code signed, but their contents should be"
|
||||
@ -177,7 +177,7 @@ runs:
|
||||
|
||||
# Look for DMG files recursively
|
||||
echo "Looking for DMG files..."
|
||||
dmg_file=$(find out -name "*.dmg" -print -quit)
|
||||
dmg_file=$(find ./dist -name "*.dmg" -print -quit)
|
||||
if [ -n "$dmg_file" ]; then
|
||||
echo "Found DMG: $dmg_file"
|
||||
cp "$dmg_file" "upload/TriliumNextNotes-${{ github.ref_name }}-macos-${{ inputs.arch }}.dmg"
|
||||
@ -187,7 +187,7 @@ runs:
|
||||
|
||||
# Look for ZIP files recursively
|
||||
echo "Looking for ZIP files..."
|
||||
zip_file=$(find out -name "*.zip" -print -quit)
|
||||
zip_file=$(find ./dist -name "*.zip" -print -quit)
|
||||
if [ -n "$zip_file" ]; then
|
||||
echo "Found ZIP: $zip_file"
|
||||
cp "$zip_file" "upload/TriliumNextNotes-${{ github.ref_name }}-macos-${{ inputs.arch }}.zip"
|
||||
@ -199,7 +199,7 @@ runs:
|
||||
echo "Collecting artifacts for ${{ inputs.os }}..."
|
||||
for ext in ${{ inputs.extension }}; do
|
||||
echo "Looking for .$ext files..."
|
||||
file=$(find out -name "*.$ext" -print -quit)
|
||||
file=$(find ./dist -name "*.$ext" -print -quit)
|
||||
if [ -n "$file" ]; then
|
||||
echo "Found $file for extension $ext"
|
||||
cp "$file" "upload/TriliumNextNotes-${{ github.ref_name }}-${{ inputs.os }}-${{ inputs.arch }}.$ext"
|
||||
|
6
.github/workflows/dev.yml
vendored
@ -1,9 +1,9 @@
|
||||
name: Dev
|
||||
on:
|
||||
push:
|
||||
branches-ignore:
|
||||
- 'develop'
|
||||
- 'feature/update**'
|
||||
branches: [ develop ]
|
||||
pull_request:
|
||||
branches: [ develop ]
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
|
@ -1,13 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
cd src/public
|
||||
echo Summary
|
||||
cloc HEAD \
|
||||
--git --md \
|
||||
--include-lang=javascript,typescript
|
||||
|
||||
echo By file
|
||||
cloc HEAD \
|
||||
--git --md \
|
||||
--include-lang=javascript,typescript \
|
||||
--by-file | grep \.js\|
|
@ -30,6 +30,9 @@ try {
|
||||
"./package.json",
|
||||
"./LICENSE",
|
||||
"./README.md",
|
||||
"./forge.config.cjs",
|
||||
"./bin/tpl/",
|
||||
"./bin/electron-forge/desktop.ejs",
|
||||
"./src/views/",
|
||||
"./src/etapi/etapi.openapi.yaml",
|
||||
"./src/routes/api/openapi.json",
|
||||
@ -38,7 +41,8 @@ try {
|
||||
"./src/public/robots.txt",
|
||||
"./src/public/fonts",
|
||||
"./src/public/stylesheets",
|
||||
"./src/public/translations"
|
||||
"./src/public/translations",
|
||||
"./packages/turndown-plugin-gfm/src"
|
||||
]);
|
||||
|
||||
for (const asset of assetsToCopy) {
|
||||
@ -64,7 +68,6 @@ try {
|
||||
"node_modules/katex/dist/contrib/mhchem.min.js",
|
||||
"node_modules/katex/dist/contrib/auto-render.min.js",
|
||||
"node_modules/@highlightjs/cdn-assets/highlight.min.js",
|
||||
"node_modules/@mind-elixir/node-menu/dist/node-menu.umd.cjs"
|
||||
]);
|
||||
|
||||
const nodeModulesFolder = new Set([
|
||||
@ -73,14 +76,11 @@ try {
|
||||
"node_modules/dayjs/",
|
||||
"node_modules/boxicons/css/",
|
||||
"node_modules/boxicons/fonts/",
|
||||
"node_modules/mermaid/dist/",
|
||||
"node_modules/jquery/dist/",
|
||||
"node_modules/jquery-hotkeys/",
|
||||
"node_modules/split.js/dist/",
|
||||
"node_modules/panzoom/dist/",
|
||||
"node_modules/i18next/",
|
||||
"node_modules/i18next-http-backend/",
|
||||
"node_modules/jsplumb/dist/",
|
||||
"node_modules/vanilla-js-wheel-zoom/dist/",
|
||||
"node_modules/mark.js/dist/",
|
||||
"node_modules/normalize.css/",
|
||||
@ -90,7 +90,6 @@ try {
|
||||
"node_modules/codemirror/addon/",
|
||||
"node_modules/codemirror/mode/",
|
||||
"node_modules/codemirror/keymap/",
|
||||
"node_modules/mind-elixir/dist/",
|
||||
"node_modules/@highlightjs/cdn-assets/languages",
|
||||
"node_modules/@highlightjs/cdn-assets/styles",
|
||||
"node_modules/leaflet/dist"
|
||||
|
@ -1,11 +0,0 @@
|
||||
[Desktop Entry]
|
||||
<% if (productName) { %>Name=<%= productName %>
|
||||
<% } %><% if (description) { %>Comment=<%= description %>
|
||||
<% } %><% if (genericName) { %>GenericName=<%= genericName %>
|
||||
<% } %><% if (desktopExec) { %>Exec=<%= desktopExec %> %U
|
||||
<% } %><% if (id) { %>Icon=<%= id %>
|
||||
<% } %>Type=Application
|
||||
StartupNotify=true
|
||||
<% if (categories && categories.length) { %>Categories=<%= categories.join(';') %>;
|
||||
<% } %><% if (mimeType && mimeType.length) { %>MimeType=<%= mimeType.join(';') %>;
|
||||
<% } %>
|
Before Width: | Height: | Size: 113 KiB |
Before Width: | Height: | Size: 23 KiB |
@ -43,6 +43,7 @@ It's possible to customize the title of generated date notes by defining a `#dat
|
||||
|
||||
It is also possible to customize the title of generated month notes through the `#monthPattern` attribute, much like `#datePattern`. The options are:
|
||||
|
||||
* `{isoMonth}` results in an ISO 8061 formatted month (e.g. "2025-03" for March 2025)
|
||||
* `{monthNumberPadded}` results in a number like `09` for September, and `11` for November
|
||||
* `{month}` results in the full month name (e.g. `September` or `October`)
|
||||
* `{shortMonth3}` is replaced with the first 3 letters of the month, e.g. Jan, Feb, etc.
|
||||
@ -56,4 +57,4 @@ Trilium has some special support for day notes in the form of [backend Script AP
|
||||
|
||||
Day (and year, month) notes are created with a label - e.g. `#dateNote="2018-08-16"` this can then be used by other scripts to add new notes to day note etc.
|
||||
|
||||
Journal also has relation `child:child:child:template=Day template` (see \[\[attribute inheritance\]\]) which effectively adds \[\[template\]\] to day notes (grand-grand-grand children of Journal).
|
||||
Journal also has relation `child:child:child:template=Day template` (see \[\[attribute inheritance\]\]) which effectively adds \[\[template\]\] to day notes (grand-grand-grand children of Journal).
|
||||
|
Before Width: | Height: | Size: 508 B |
Before Width: | Height: | Size: 635 B |
Before Width: | Height: | Size: 35 KiB |
Before Width: | Height: | Size: 668 B |
Before Width: | Height: | Size: 30 KiB |
Before Width: | Height: | Size: 542 B |
Before Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 125 KiB After Width: | Height: | Size: 79 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 25 KiB |
Before Width: | Height: | Size: 79 KiB After Width: | Height: | Size: 93 KiB |
Before Width: | Height: | Size: 8.4 KiB |
Before Width: | Height: | Size: 25 KiB |
Before Width: | Height: | Size: 93 KiB |
Before Width: | Height: | Size: 92 KiB |
@ -15,4 +15,4 @@ After importing the ENEX file, go over the imported notes and resources to be su
|
||||
|
||||
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). %%{WARNING}%%
|
||||
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).
|
Before Width: | Height: | Size: 36 KiB |
Before Width: | Height: | Size: 102 KiB |
Before Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 188 B After Width: | Height: | Size: 327 B |
Before Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 327 B After Width: | Height: | Size: 81 KiB |
Before Width: | Height: | Size: 81 KiB After Width: | Height: | Size: 79 KiB |
Before Width: | Height: | Size: 79 KiB After Width: | Height: | Size: 780 B |
Before Width: | Height: | Size: 780 B After Width: | Height: | Size: 367 B |
Before Width: | Height: | Size: 367 B |
@ -1,7 +1,7 @@
|
||||
# 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
|
||||
|
||||
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 482 B After Width: | Height: | Size: 188 B |
@ -10,10 +10,10 @@ 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).
|
||||
* 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
|
||||
|
||||
@ -22,10 +22,10 @@ The horizontal layout is a more traditional layout, since it bears similarity wi
|
||||
* 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).
|
||||
* 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
|
||||
|
||||
|
Before Width: | Height: | Size: 18 KiB |
@ -1,11 +1,11 @@
|
||||
# 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.
|
||||
|
||||
@ -23,7 +23,7 @@ Do note that, by design, activating or deactivating the Zen Mode applies only to
|
||||
|
||||
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.
|
||||
|
||||
|
@ -1,23 +1,17 @@
|
||||
# FAQ
|
||||
## Mac OS support
|
||||
## macOS support
|
||||
|
||||
Originally, desktop builds of Trilium Notes has been available for Windows & Linux, but there has been a considerable demand for macOS build.
|
||||
Originally, Trilium Notes considered the macOS build unsupported. TriliumNext commits to make the experience on macOS as good as possible.
|
||||
|
||||
So I made one, but I underestimated the differences and specifics of Mac platform which seems to require special handling in several places. My lack of knowledge and frankly willingness to learn & code Mac specific functionality resulted in a current state where [Trilium does not integrate well into the OS](https://github.com/TriliumNext/Notes/issues/511)
|
||||
if you find any platform-specific issues, feel free to [report them](Troubleshooting/Reporting%20issues.md).
|
||||
|
||||
%%{WARNING}%%.
|
||||
## Translation / localisation support
|
||||
|
||||
macOS build is from now on considered "unsupported". I will strive to keep it fundamentally functional, but I won't work on Mac specific features or integrations. Note that this is more of an acknowledgment of an existing state rather than sudden change of direction.
|
||||
The original Trilium Notes application did not support multiple languages. Since we believe that internationalisation is a core part of an application, we have added support for it.
|
||||
|
||||
Of course, PRs are welcome.
|
||||
Contributions to translations are welcome.
|
||||
|
||||
## Translation / localization support
|
||||
|
||||
Trilium is currently available only in English. Translation to other languages is not planned in the near/medium term because it brings a significant maintenance overhead. This decision might be revisited once Trilium stabilizes into a more mature product.
|
||||
|
||||
For Chinese, there's an unofficial fork [here](https://github.com/Nriver/trilium-translation). Use at your own risk.
|
||||
|
||||
## Multi user support
|
||||
## Multi-user support
|
||||
|
||||
Common request is to allow multiple users collaborate, share notes etc. So far I'm resisting this because of these reasons:
|
||||
|
||||
@ -41,7 +35,9 @@ No.
|
||||
|
||||
These general purpose sync apps are not suitable to sync database files which are open and being worked on by another application. The result is that they will corrupt the database file, resulting in data loss and this message in the Trilium logs:
|
||||
|
||||
> SqliteError: database disk image is malformed
|
||||
```
|
||||
SqliteError: database disk image is malformed
|
||||
```
|
||||
|
||||
The only supported way to sync Trilium's data across the network is to use a [sync/web server](Installation%20%26%20Setup/Synchronization.md).
|
||||
|
||||
|
@ -18,7 +18,7 @@ Let's assume you want to restore the weekly backup, here's how to do it:
|
||||
|
||||
* find [data directory](Data%20directory.md) Trilium uses - easy way is to open "About Trilium Notes" from "Menu" in upper left corner and looking at "data directory"
|
||||
* I'll refer to `~/trilium-data` as data directory from now on
|
||||
* find `~/trilium-data/backup/backup-weekly.db` - this is the [document](#root/xjSsCcvVZf6H)backup
|
||||
* find `~/trilium-data/backup/backup-weekly.db` - this is the [document](#root/xjSsCcvVZf6H) backup
|
||||
* at this point stop/kill Trilium
|
||||
* delete `~/trilium-data/document.db`, `~/trilium-data/document.db-wal` and `~/trilium-data/document.db-shm` (latter two files are auto generated)
|
||||
* copy and rename this `~/trilium-data/backup/backup-weekly.db` to `~/trilium-data/document.db`
|
||||
@ -40,4 +40,4 @@ noBackup=true
|
||||
|
||||
You can also review the [configuration](../Advanced%20Usage/Configuration%20\(config.ini%20or%20e.md) file to provide all `config.ini` values as environment variables instead.
|
||||
|
||||
See [sample config](https://github.com/TriliumNext/Notes/blob/master/config-sample.ini). %%{WARNING}%%
|
||||
See [sample config](https://github.com/TriliumNext/Notes/blob/master/config-sample.ini).
|
@ -9,7 +9,8 @@ If you need help installing Docker, reference the [Docker Installation Docs](htt
|
||||
|
||||
**Note:** Trilium's Docker container requires root privileges to operate correctly.
|
||||
|
||||
> \[!WARNING\] If you're using a SMB/CIFS share or folder as your Trilium data directory, [you'll need](https://github.com/TriliumNext/Notes/issues/415#issuecomment-2344824400) to add the mount options of `nobrl` and `noperm` when mounting your SMB share.
|
||||
> [!WARNING]
|
||||
> If you're using a SMB/CIFS share or folder as your Trilium data directory, [you'll need](https://github.com/TriliumNext/Notes/issues/415#issuecomment-2344824400) to add the mount options of `nobrl` and `noperm` when mounting your SMB share.
|
||||
|
||||
## Running with Docker Compose
|
||||
|
||||
|
@ -5,7 +5,7 @@ The recommended way is to use a Helm chart.
|
||||
|
||||
## Root privileges
|
||||
|
||||
> \[!NOTE\]
|
||||
> [!NOTE]
|
||||
> The Trilium container at this time needs to be run with root privileges. It will swap to UID and GID `1000:1000` to run the `node` process after execution though, so the main process doesn't run with root privileges.
|
||||
|
||||
The Trilium docker container needs to be run with root privileges. The node process inside the container will be started with reduced privileges (uid:gid 1000:1000) after some initialization logic. Please make sure that you don't use a security context (PodSecurityContext) which changes the user ID. To use a different uid:gid for file storage and the application, please use the `USER_UID` & `USER_GID` environment variables.
|
||||
|
@ -25,10 +25,12 @@ sudo apt install libpng16-16 libpng-dev pkg-config autoconf libtool build-essent
|
||||
|
||||
### Download
|
||||
|
||||
You can either download source code zip/tar from [https://github.com/TriliumNext/Notes/releases/latest\]\]](https://github.com/TriliumNext/Notes/releases/latest%5D%5D) %%{WARNING}%%or clone git repository **from stable branch** with
|
||||
You can either download source code zip/tar from [https://github.com/TriliumNext/Notes/releases/latest](https://github.com/TriliumNext/Notes/releases/latest).
|
||||
|
||||
For the latest version including betas, clone Git repository **from** `**master**` **branch** with:
|
||||
|
||||
```
|
||||
git clone -b stable https://github.com/triliumnext/notes.git %%{WARNING}%%
|
||||
git clone -b master https://github.com/triliumnext/notes.git
|
||||
```
|
||||
|
||||
## Installation
|
||||
|
@ -3,9 +3,9 @@ This is essentially Trilium sources + node modules + node.js runtime packaged in
|
||||
|
||||
## Steps
|
||||
|
||||
* ssh into your server
|
||||
* use `wget` (or `curl` or whatever) to download latest [trilium-linux-x64-server-\[VERSION\].xz](https://github.com/TriliumNext/Notes/releases/latest)%%{WARNING}%% (notice -server suffix) on your server
|
||||
* unpack the archive, e.g. using `tar -xf -d trilium-linux-x64-server-[VERSION].tar.xz`
|
||||
* SSH into your server
|
||||
* use `wget` (or `curl`) to download latest `TriliumNextNotes-Server-[VERSION]-linux-x64.tar.xz` (notice `-Server` suffix) on your server.
|
||||
* unpack the archive, e.g. using `tar -xf -d TriliumNextNotes-Server-[VERSION]-linux-x64.tar.xz`
|
||||
* `cd trilium-linux-x64-server`
|
||||
* `./trilium.sh`
|
||||
* you can open the browser and open http://\[your-server-hostname\]:8080 and you should see Trilium initialization page
|
||||
@ -20,7 +20,7 @@ The problem with above steps is that once you close the SSH connection, the Tril
|
||||
* After downloading, extract and move Trilium:
|
||||
|
||||
```
|
||||
tar -xvf trilium-linux-x64-server-[VERSION].tar.xz
|
||||
tar -xvf TriliumNextNotes-Server-[VERSION]-linux-x64.tar.xz
|
||||
sudo mv trilium-linux-x64-server /opt/trilium
|
||||
```
|
||||
|
||||
|
@ -24,7 +24,7 @@ If there's multiple clippings from the same page (and on the same day), then the
|
||||
**Extension is available from:**
|
||||
|
||||
* [Project release page](https://github.com/TriliumNext/web-clipper/releases) - .xpi for Firefox and .zip for Chromium based browsers.
|
||||
* %%{WARNING}%% [Chrome Web Store](https://chromewebstore.google.com/detail/trilium-web-clipper/dfhgmnfclbebfobmblelddiejjcijbjm)
|
||||
* [Chrome Web Store](https://chromewebstore.google.com/detail/trilium-web-clipper/dfhgmnfclbebfobmblelddiejjcijbjm)
|
||||
|
||||
## Configuration
|
||||
|
||||
|
Before Width: | Height: | Size: 100 KiB After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 4.2 KiB |
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 397 KiB |
Before Width: | Height: | Size: 397 KiB After Width: | Height: | Size: 42 KiB |
Before Width: | Height: | Size: 42 KiB |
Before Width: | Height: | Size: 68 KiB |
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 7.9 KiB |
Before Width: | Height: | Size: 9.1 KiB After Width: | Height: | Size: 7.3 KiB |
Before Width: | Height: | Size: 56 KiB |
Before Width: | Height: | Size: 4.6 KiB |
Before Width: | Height: | Size: 7.9 KiB |
Before Width: | Height: | Size: 7.3 KiB |
Before Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 7.3 KiB |
Before Width: | Height: | Size: 8.4 KiB |
Before Width: | Height: | Size: 9.7 KiB |
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 31 KiB |
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 2.2 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 9.1 KiB |
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 56 KiB |
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 4.6 KiB |
@ -1,16 +1,23 @@
|
||||
# Calendar View
|
||||

|
||||

|
||||
|
||||
The Calendar view of Book notes will display each child note in a calendar that has a start date and optionally an end date, as an event.
|
||||
|
||||
The Calendar view has multiple display modes:
|
||||
|
||||
* Week view, where all the 7 days of the week (or 5 if the weekends are hidden) are displayed in columns. This mode allows entering and displaying time-specific events, not just all-day events.
|
||||
* Month view, where the entire month is displayed and all-day events can be inserted. Both time-specific events and all-day events are listed.
|
||||
* Year view, which displays the entire year for quick reference.
|
||||
* List view, which displays all the events of a given month in sequence.
|
||||
|
||||
Unlike other Book view types, the Calendar view also allows some kind of interaction, such as moving events around as well as creating new ones.
|
||||
|
||||
## Creating a calendar
|
||||
|
||||
| | | |
|
||||
| --- | --- | --- |
|
||||
| 1 |  | The Calendar View works only for Book note types. To create a new note, right click on the note tree on the left and select Insert note after, or Insert child note and then select _Book_. |
|
||||
| 2 |  | Once created, the “View type” of the Book needs changed to “Calendar”, by selecting the “Book Properties” tab in the ribbon. |
|
||||
| 1 |  | The Calendar View works only for Book note types. To create a new note, right click on the note tree on the left and select Insert note after, or Insert child note and then select _Book_. |
|
||||
| 2 |  | Once created, the “View type” of the Book needs changed to “Calendar”, by selecting the “Book Properties” tab in the ribbon. |
|
||||
|
||||
## Creating a new event/note
|
||||
|
||||
@ -23,7 +30,7 @@ Unlike other Book view types, the Calendar view also allows some kind of interac
|
||||
## Interacting with events
|
||||
|
||||
* Hovering the mouse over an event will display information about the note.
|
||||

|
||||

|
||||
* Left clicking the event will go to that note. Middle clicking will open the note in a new tab and right click will offer more options including opening the note in a new split or window.
|
||||
* Drag and drop an event on the calendar to move it to another day.
|
||||
* The length of an event can be changed by placing the mouse to the right edge of the event and dragging the mouse around.
|
||||
@ -32,11 +39,7 @@ Unlike other Book view types, the Calendar view also allows some kind of interac
|
||||
|
||||
The following attributes can be added to the book type:
|
||||
|
||||
| Name | Description |
|
||||
| --- | --- |
|
||||
| `#calendar:hideWeekends` | When present (regardless of value), it will hide Saturday and Sundays from the calendar. |
|
||||
| `#calendar:weekNumbers` | When present (regardless of value), it will show the number of the week on the calendar. |
|
||||
| `~child:template` | Defines the template for newly created notes in the calendar (via dragging or clicking). |
|
||||
<table><thead><tr><th>Name</th><th>Description</th></tr></thead><tbody><tr><td><code>#calendar:hideWeekends</code></td><td>When present (regardless of value), it will hide Saturday and Sundays from the calendar.</td></tr><tr><td><code>#calendar:weekNumbers</code></td><td>When present (regardless of value), it will show the number of the week on the calendar.</td></tr><tr><td><code>#calendar:view</code></td><td><p>Which view to display in the calendar:</p><ul><li><code>timeGridWeek</code> for the <em>week</em> view;</li><li><code>dayGridMonth</code> for the <em>month</em> view;</li><li><code>multiMonthYear</code> for the <em>year</em> view;</li><li><code>listMonth</code> for the <em>list</em> view.</li></ul><p>Any other value will be dismissed and the default view (month) will be used instead.</p><p>The value of this label is automatically updated when changing the view using the UI buttons.</p></td></tr><tr><td><code>~child:template</code></td><td>Defines the template for newly created notes in the calendar (via dragging or clicking).</td></tr></tbody></table>
|
||||
|
||||
In addition, the first day of the week can be either Sunday or Monday and can be adjusted from the application settings.
|
||||
|
||||
@ -48,27 +51,35 @@ For each note of the calendar, the following attributes can be used:
|
||||
| --- | --- |
|
||||
| `#startDate` | The date the event starts, which will display it in the calendar. The format is `YYYY-MM-DD` (year, month and day separated by a minus sign). |
|
||||
| `#endDate` | Similar to `startDate`, mentions the end date if the event spans across multiple days. The date is inclusive, so the end day is also considered. The attribute can be missing for single-day events. |
|
||||
| `#startTime` | The time the event starts at. If this value is missing, then the event is considered a full-day event. The format is `HH:MM` (hours in 24-hour format and minutes). |
|
||||
| `#endTime` | Similar to `startTime`, it mentions the time at which the event ends (in relation with `endDate` if present, or `startDate`). |
|
||||
| `#color` | Displays the event with a specified color (named such as `red`, `gray` or hex such as `#FF0000`). This will also change the color of the note in other places such as the note tree. |
|
||||
| `#calendar:color` | Similar to `#color`, but applies the color only for the event in the calendar and not for other places such as the note tree. |
|
||||
| `#iconClass` | If present, the icon of the note will be displayed to the left of the event title. |
|
||||
| `#calendar:title` | Changes the title of an event to point to an attribute of the note other than the title, either a label (e.g. `#assignee`) or a relation (e.g. `~for`). See _Advanced use-cases_ for more information. |
|
||||
| `#calendar:promotedAttributes` | Allows displaying the value of one or more promoted attributes in the calendar like this:  <br> <br>`<br>#label:weight="promoted,number,single,precision=1"<br>#label:mood="promoted,alias=Mood,single,text"<br>#calendar:promotedAttributes="label:weight,label:mood" <br>` <br> <br>It can also be used with relations, case in which it will display the title of the target note: <br> <br>`<br>#relation:assignee="promoted,alias=Assignee,single,text"<br>#calendar:promotedAttributes="relation:assignee" <br>~assignee=@My assignee <br>` |
|
||||
| `#calendar:startDate` | Allows using a different label to represent the start date, other than `#startDate` (e.g. `#expiryDate`). The label name must be prefixed with `#`. If the label is not defined for a note, the default will be used instead. |
|
||||
| `#calendar:endDate` | Allows using a different label to represent the start date, other than `#endDate`. The label name must be prefixed with `#`. If the label is not defined for a note, the default will be used instead. |
|
||||
| `#calendar:title` | Changes the title of an event to point to an attribute of the note other than the title, can either a label or a relation (without the `#` or `~` symbol). See _Use-cases_ for more information. |
|
||||
| `#calendar:displayedAttributes` | Allows displaying the value of one or more attributes in the calendar like this: <br> <br> <br> <br>`#weight="70" #Mood="Good" #calendar:displayedAttributes="weight,Mood"` <br> <br>It can also be used with relations, case in which it will display the title of the target note: <br> <br>`~assignee=@My assignee #calendar:displayedAttributes="assignee"` |
|
||||
| `#calendar:startDate` | Allows using a different label to represent the start date, other than `startDate` (e.g. `expiryDate`). The label name **must not be** prefixed with `#`. If the label is not defined for a note, the default will be used instead. |
|
||||
| `#calendar:endDate` | Similar to `#calendar:startDate`, allows changing the attribute which is being used to read the end date. |
|
||||
| `#calendar:startTime` | Similar to `#calendar:startDate`, allows changing the attribute which is being used to read the start time. |
|
||||
| `#calendar:endTime` | Similar to `#calendar:startDate`, allows changing the attribute which is being used to read the end time. |
|
||||
|
||||
## How the calendar works
|
||||
|
||||
The calendar displays all the child notes of the book that have a `#startDate`. An `#endDate` can optionally be added.
|
||||

|
||||
|
||||
The calendar displays all the child notes of the book that have a `#startDate`. An `#endDate` can optionally be added.
|
||||
|
||||
If editing the start date and end date from the note itself is desirable, the following attributes can be added to the book note:
|
||||
|
||||
```
|
||||
#viewType=calendar #label:startDate(inheritable)="promoted,alias=Start Date,single,date" #label:endDate(inheritable)="promoted,alias=End Date,single,date" #hidePromotedAttributes
|
||||
#viewType=calendar #label:startDate(inheritable)="promoted,alias=Start Date,single,date"
|
||||
#label:endDate(inheritable)="promoted,alias=End Date,single,date"
|
||||
#hidePromotedAttributes
|
||||
```
|
||||
|
||||
This will result in:
|
||||
|
||||

|
||||

|
||||
|
||||
When not used in a Journal, the calendar is recursive. That is, it will look for events not just in its child notes but also in the children of these child notes.
|
||||
|
||||
@ -85,30 +96,28 @@ Based on the `#calendarRoot` (or `#workspaceCalendarRoot`) attribute, the calend
|
||||
* Clicking on the empty space on a date will automatically open that day's note or create it if it does not exist.
|
||||
* Direct children of a day note will be displayed on the calendar despite not having a `dateNote` attribute. Children of the child notes will not be displayed.
|
||||
|
||||

|
||||

|
||||
|
||||
### Using a different attribute as event title
|
||||
|
||||
By default, events are displayed on the calendar by their note title. However, it is possible to configure a different attribute to be displayed instead.
|
||||
|
||||
To do so, assign `#calendar:title` to the child note (not the calendar/book note), with the value being `#name` where `name` can be any label. The attribute can also come through inheritance such as a template attribute. If the note does not have the requested label, the title of the note will be used instead.
|
||||
To do so, assign `#calendar:title` to the child note (not the calendar/book note), with the value being `name` where `name` can be any label (make not to add the `#` prefix). The attribute can also come through inheritance such as a template attribute. If the note does not have the requested label, the title of the note will be used instead.
|
||||
|
||||
| | |
|
||||
| --- | --- |
|
||||
|  |  |
|
||||
<table><thead><tr><th> </th><th> </th></tr></thead><tbody><tr><td><pre><code class="language-text-x-trilium-auto">#startDate=2025-02-11 #endDate=2025-02-13 #name="My vacation" #calendar:title="name"</code></pre></td><td><img src="5_Calendar View_image.png"></td></tr></tbody></table>
|
||||
|
||||
### Using a relation attribute as event title
|
||||
|
||||
Similarly to using an attribute, use `#calendar:title` and set it to `~name` where `name` is the name of the relation to use.
|
||||
Similarly to using an attribute, use `#calendar:title` and set it to `name` where `name` is the name of the relation to use.
|
||||
|
||||
Moreover, if there are more relations of the same name, they will be displayed as multiple events coming from the same note.
|
||||
|
||||
| | |
|
||||
| --- | --- |
|
||||
|  |  |
|
||||
| `#startDate=2025-02-14 #endDate=2025-02-15 ~for=@John Smith ~for=@Jane Doe #calendar:title="for"` |  |
|
||||
|
||||
Note that it's even possible to have a `#calendar:title` on the target note (e.g. “John Smith”) which will try to render an attribute of it. Note that it's not possible to use a relation here as well for safety reasons (an accidental recursion of attributes could cause the application to loop infinitely).
|
||||
|
||||
| | |
|
||||
| --- | --- |
|
||||
|  |  |
|
||||
| `#calendar:title="shortName" #shortName="John S."` |  |
|
@ -17,16 +17,16 @@ The position on the map and the zoom are saved inside the map note and restored
|
||||
|
||||
| | | |
|
||||
| --- | --- | --- |
|
||||
| 1 | | To create a marker, first navigate to the desired point on the map. Then press the button on the top-right of the map. <br> <br>If the button is not visible, make sure the button section is visible by pressing the chevron button ( ) in the top-right of the map. |
|
||||
| 1 | | To create a marker, first navigate to the desired point on the map. Then press the button on the top-right of the map. <br> <br>If the button is not visible, make sure the button section is visible by pressing the chevron button ( ) in the top-right of the map. |
|
||||
| 2 |  | Once pressed, the map will enter in the insert mode, as illustrated by the notification. <br> <br>Simply click the point on the map where to place the marker, or the Escape key to cancel. |
|
||||
| 3 |  | Enter the name of the marker/note to be created. |
|
||||
| 4 |  | Once confirmed, the marker will show up on the map and it will also be displayed as a child note of the map. |
|
||||
| 4 |  | Once confirmed, the marker will show up on the map and it will also be displayed as a child note of the map. |
|
||||
|
||||
## How the location of the markers is stored
|
||||
|
||||
The location of a marker is stored in the `#geolocation` attribute of the child notes:
|
||||
|
||||

|
||||

|
||||
|
||||
This value can be added manually if needed. The value of the attribute is made up of the latitude and longitude separated by a comma.
|
||||
|
||||
@ -87,7 +87,7 @@ Trilium has basic support for displaying GPS tracks on the geo map.
|
||||
| | | |
|
||||
| --- | --- | --- |
|
||||
| 1 |  | To add a track, simply drag & drop a .gpx file inside the geo map in the note tree. |
|
||||
| 2 |  | In order for the file to be recognized as a GPS track, it needs to show up as `application/gpx+xml` in the _File type_ field. |
|
||||
| 2 |  | In order for the file to be recognized as a GPS track, it needs to show up as `application/gpx+xml` in the _File type_ field. |
|
||||
| 3 |  | When going back to the map, the track should now be visible. <br> <br>The start and end points of the track are indicated by the two blue markers. |
|
||||
|
||||
## Troubleshooting
|
||||
|
Before Width: | Height: | Size: 68 KiB After Width: | Height: | Size: 254 B |
Before Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 254 B |
After Width: | Height: | Size: 27 KiB |
Before Width: | Height: | Size: 90 KiB |
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 89 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 115 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 391 B |
Before Width: | Height: | Size: 391 B After Width: | Height: | Size: 272 B |
Before Width: | Height: | Size: 272 B After Width: | Height: | Size: 7.6 KiB |
Before Width: | Height: | Size: 272 B After Width: | Height: | Size: 26 KiB |
Before Width: | Height: | Size: 7.6 KiB After Width: | Height: | Size: 68 KiB |
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 1.9 KiB |
63
docs/User Guide/User Guide/Note Types/Text/Admonitions.md
Normal file
@ -0,0 +1,63 @@
|
||||
# Admonitions
|
||||

|
||||
|
||||
Admonitions are a way to highlight information to the reader. Other names for it include _call-outs_ and _info/warning/alert boxes_.
|
||||
|
||||
## Inserting a new admonition
|
||||
|
||||
### From the UI
|
||||
|
||||
In the Formatting toolbar:
|
||||
|
||||

|
||||
|
||||
### Via the keyboard
|
||||
|
||||
It's possible to insert an admonition simply by typing:
|
||||
|
||||
* `!!! note`
|
||||
* `!!! tip`
|
||||
* `!!! important`
|
||||
* `!!! caution`
|
||||
* `!!! warning`
|
||||
|
||||
In addition to that, it's also possible to type `!!!` followed by any text, case in which a default admonition type will appear (note) with the entered text inside it.
|
||||
|
||||
## Interaction
|
||||
|
||||
By design, admonitions act very similar to block quotes.
|
||||
|
||||
* Selecting a text and pressing the admonition button will turn that text into an admonition.
|
||||
* If selecting multiple admonitions, pressing the admonition button will automatically merge them into one.
|
||||
|
||||
Inside an admonition:
|
||||
|
||||
* Pressing <kbd>Backspace</kbd> while the admonition is empty will remove it.
|
||||
* Pressing <kbd>Enter</kbd> will start a new paragraph. Pressing it twice will exit out of the admonition.
|
||||
* Headings and other block content including tables can be inserted inside the admonition.
|
||||
|
||||
## Types of admonitions
|
||||
|
||||
There are currently five types of admonitions: _Note_, _Tip_, _Important_, _Caution_, _Warning_.
|
||||
|
||||
These types were inspired by GitHub's support for this feature and there are currently no plans for adjusting it or allowing the user to customize them.
|
||||
|
||||
## Markdown support
|
||||
|
||||
The Markdown syntax for admonitions as supported by Trilium is the one that GitHub uses, which is as follows:
|
||||
|
||||
```
|
||||
> [!NOTE]
|
||||
> This is a note.
|
||||
|
||||
> [!TIP]
|
||||
> This is a tip.
|
||||
|
||||
> [!IMPORTANT]
|
||||
> This is a very important information.
|
||||
|
||||
> [!CAUTION]
|
||||
> This is a caution.
|
||||
```
|
||||
|
||||
There are currently no plans of supporting alternative admonition syntaxes such as `!!! note`.
|
BIN
docs/User Guide/User Guide/Note Types/Text/Admonitions_image.png
Normal file
After Width: | Height: | Size: 7.0 KiB |
Before Width: | Height: | Size: 90 KiB After Width: | Height: | Size: 90 KiB |
@ -7,18 +7,18 @@ An image can be uploaded in the form of note's [attachment](../../Basic%20Concep
|
||||
|
||||
To add an image to the note, simply drag it from file explorer onto the note editor inside Trilium and the image will be uploaded.
|
||||
|
||||

|
||||

|
||||
|
||||
Alternatively you can click on block toolbar and then on "Insert image":
|
||||
|
||||

|
||||

|
||||
|
||||
You can also copy and paste an image from web - the image will be (asynchronously) downloaded and embedded.
|
||||
|
||||
## Configuring the images
|
||||
|
||||
Clicking on an image will reveal a popup with multiple options:
|
||||

|
||||

|
||||
|
||||
### Alignment
|
||||
|
||||
@ -26,10 +26,10 @@ The first set of options configure the alignment are, in order:
|
||||
|
||||
| Icon | Option | Preview | Description |
|
||||
| --- | --- | --- | --- |
|
||||
|  | Inline |  | As the name suggests, the name can be put inside a paragraph and moved around similarly as if it was a block of text. Use drag & drop or cut-paste to move it around. |
|
||||
|  | Centered image |  | The image will be displayed as a block and centered, not allowing text in either the left or right of it. |
|
||||
|  | Wrap text |  | The image will be displayed to the left or the right of the text. |
|
||||
|  | Block align |  | Similarly to _Centered image_, the image will be displayed as a block and aligned either to the left or to the right, but not allowing text to flow on either of its sides. |
|
||||
|  | Inline |  | As the name suggests, the name can be put inside a paragraph and moved around similarly as if it was a block of text. Use drag & drop or cut-paste to move it around. |
|
||||
|  | Centered image |  | The image will be displayed as a block and centered, not allowing text in either the left or right of it. |
|
||||
|  | Wrap text |  | The image will be displayed to the left or the right of the text. |
|
||||
|  | Block align |  | Similarly to _Centered image_, the image will be displayed as a block and aligned either to the left or to the right, but not allowing text to flow on either of its sides. |
|
||||
|
||||
## Compression
|
||||
|
||||
|
@ -9,16 +9,11 @@
|
||||
|
||||
1. [Server installation](Installation%20%26%20Setup/Server%20Installation.md)
|
||||
2. [Mobile frontend](Installation%20%26%20Setup/Mobile%20Frontend.md) (optional)
|
||||
3. [](https://heroku.com/deploy?template=https://github.com/feilongfl/trilium-heroku) %%{WARNING}%%
|
||||
4. [PikaPods managed hosting](https://www.pikapods.com/pods?run=trilium-next)
|
||||
3. [PikaPods managed hosting](https://www.pikapods.com/pods?run=trilium-next)
|
||||
|
||||
**Combination of server and desktop/laptop** - Install the application on both a server, for web access and data synchronization, and desktop instance(s). This allows all the data to be stored on the server and either accessed from the web browser, or the desktop application. The desktop application will sync and store the data locally so that it can be used when offline.
|
||||
**Combination of server and desktop/laptop** - Install the application on both a server, for web access and data synchronisation, and desktop instance(s). This allows all the data to be stored on the server and either accessed from the web browser, or the desktop application. The desktop application will sync and store the data locally so that it can be used when offline.
|
||||
|
||||
1. [Server installation](Installation%20%26%20Setup/Server%20Installation.md)
|
||||
2. [Mobile frontend](Installation%20%26%20Setup/Mobile%20Frontend.md) (optional)
|
||||
3. [Desktop installation](Installation%20%26%20Setup/Desktop%20Installation.md)
|
||||
4. [Synchronization](Installation%20%26%20Setup/Synchronization.md)
|
||||
|
||||
## Basic concepts
|
||||
|
||||
1. Understand [Note](Basic%20Concepts/Note.md)
|
||||
4. [Synchronization](Installation%20%26%20Setup/Synchronization.md)
|
Before Width: | Height: | Size: 4.7 KiB |
Before Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 28 KiB |
Before Width: | Height: | Size: 57 KiB |