diff --git a/apps/server/src/services/window.ts b/apps/server/src/services/window.ts index a803e150d..42969cf39 100644 --- a/apps/server/src/services/window.ts +++ b/apps/server/src/services/window.ts @@ -257,7 +257,7 @@ async function configureWebContents(webContents: WebContents, spellcheckEnabled: } function getIcon() { - return path.join(RESOURCE_DIR, "images/app-icons/png/256x256" + (isDev ? "-dev" : "") + ".png"); + return path.join(RESOURCE_DIR, "../public/assets/icon.png"); } async function createSetupWindow() { diff --git a/apps/website/src/app.css b/apps/website/src/app.css index 1c4d2a8bc..e6f251501 100644 --- a/apps/website/src/app.css +++ b/apps/website/src/app.css @@ -1,2 +1,10 @@ @import 'tailwindcss'; @plugin '@tailwindcss/typography'; + +main a { + text-decoration: revert; +} + +a.rounded-full, a.rounded-xl { + text-decoration: none; +} diff --git a/apps/website/src/app.html b/apps/website/src/app.html index 16ef9cc59..fee9ee80f 100644 --- a/apps/website/src/app.html +++ b/apps/website/src/app.html @@ -6,7 +6,7 @@ %sveltekit.head% - -
%sveltekit.body%
+ + %sveltekit.body% diff --git a/apps/website/src/lib/download-helper.ts b/apps/website/src/lib/download-helper.ts index 08f473ae3..8f19b7020 100644 --- a/apps/website/src/lib/download-helper.ts +++ b/apps/website/src/lib/download-helper.ts @@ -41,6 +41,14 @@ export const downloadMatrix: DownloadMatrix = { }, zip: { name: "Portable (.zip)" + }, + scoop: { + name: "Scoop", + url: "https://scoop.sh/#/apps?q=triliumnext" + }, + winget: { + name: "Winget", + url: "https://github.com/microsoft/winget-pkgs/tree/master/manifests/t/TriliumNext/Notes/" } } }, @@ -66,6 +74,14 @@ export const downloadMatrix: DownloadMatrix = { }, zip: { name: "Portable (.zip)" + }, + nixpkgs: { + name: "nixpkgs", + url: "https://search.nixos.org/packages?query=trilium-next" + }, + aur: { + name: "AUR", + url: "https://aur.archlinux.org/packages/triliumnext-bin" } } }, @@ -107,6 +123,10 @@ export const downloadMatrix: DownloadMatrix = { name: "ARM (.tar.xz)", url: `https://github.com/TriliumNext/Notes/releases/download/v${version}/TriliumNextNotes-Server-v${version}-linux-arm64.tar.xz` }, + nixos: { + name: "NixOS module", + url: "https://search.nixos.org/options?query=trilium-server" + } } }, pikapod: { @@ -129,7 +149,8 @@ export const downloadMatrix: DownloadMatrix = { export function buildDownloadUrl(app: App, platform: Platform, format: string, architecture: Architecture): string { if (app === "desktop") { - return `https://github.com/TriliumNext/Notes/releases/download/v${version}/TriliumNextNotes-v${version}-${platform}-${architecture}.${format}`; + return downloadMatrix.desktop[platform]?.downloads[format].url ?? + `https://github.com/TriliumNext/Notes/releases/download/v${version}/TriliumNextNotes-v${version}-${platform}-${architecture}.${format}`; } else if (app === "server") { return downloadMatrix.server[platform]?.downloads[format].url ?? "#"; } else { diff --git a/apps/website/src/routes/+layout.svelte b/apps/website/src/routes/+layout.svelte index f8a8cea2e..9cefd1736 100644 --- a/apps/website/src/routes/+layout.svelte +++ b/apps/website/src/routes/+layout.svelte @@ -7,8 +7,10 @@
+
{@render children()} +
- diff --git a/apps/website/src/routes/+page.svelte b/apps/website/src/routes/+page.svelte index 47cf49540..a438901b5 100644 --- a/apps/website/src/routes/+page.svelte +++ b/apps/website/src/routes/+page.svelte @@ -1,8 +1,16 @@ -
+ + Trilium Notes + + + +
@@ -15,10 +23,12 @@
-

Organize Your Thoughts.
Build Your Knowledge.

-

+

Organize Your Thoughts.
Build Your Knowledge.

+

Trilium Notes helps you build and organize complex personal knowledge bases effortlessly. Its unique tree structure, rich editing tools, and powerful search features make managing your information intuitive and flexible. + +

@@ -40,48 +50,72 @@

Beyond Text: Smarter Note Types

- -
- Canvas Note Screenshot -
-

Canvas Notes

-

Draw and arrange elements freely using an Excalidraw-powered canvas — ideal for diagrams, sketches, and visual planning.

-
-
+ - -
- Mermaid Diagram Screenshot -
-

Mermaid Diagrams

-

Render flowcharts, Gantt charts, and sequence diagrams with Mermaid markdown syntax directly in your notes.

-
-
+ - -
- Geo Map Screenshot -
-

Geo Maps

-

Plot locations and GPX tracks to visualize geography-linked notes and movement patterns on interactive maps.

-
-
+ - -
- Mind Map Screenshot -
-

Mind Maps

-

Organize ideas visually using a drag-and-drop mind map editor powered by Mind Elixir.

-
-
+ +
+ +

Technical Features

+ +
+ + + + + + +

Feature Highlights

-
+

Organization & Navigation

@@ -109,7 +143,6 @@

Security & Sync

  • Direct OpenID and TOTP integration for secure login.
  • -
  • Synchronization with self-hosted and third-party servers.
  • Strong note encryption with per-note granularity.
  • Sharing notes publicly on the internet.
@@ -120,10 +153,8 @@

Advanced & Customization

  • Relation maps and link maps to visualize notes.
  • -
  • Scripting support and REST API for automation.
  • Touch-optimized mobile frontend and dark/user themes.
  • Customizable UI with sidebar buttons and user widgets.
  • -
  • Metrics with Grafana dashboard integration.
  • Scales efficiently beyond 100,000 notes.
@@ -131,13 +162,13 @@
-
+

Ready to get started with Trilium Notes?

-

Build your personal knowledge base with powerful features and full privacy.

+

Build your personal knowledge base with powerful features and full privacy.

diff --git a/apps/website/src/routes/download/+page.svelte b/apps/website/src/routes/download/+page.svelte index aea89d905..b09c684f9 100644 --- a/apps/website/src/routes/download/+page.svelte +++ b/apps/website/src/routes/download/+page.svelte @@ -7,13 +7,20 @@ let architecture = getArchitecture(); -
+ + Trilium Notes: Download + + + +
-

Download the desktop application

+

Download the desktop application

- Architecture: + Architecture:
{#each architectures as arch}
diff --git a/apps/website/src/routes/download/download-card.svelte b/apps/website/src/routes/download/download-card.svelte index c2423505d..9fd89c20f 100644 --- a/apps/website/src/routes/download/download-card.svelte +++ b/apps/website/src/routes/download/download-card.svelte @@ -11,16 +11,16 @@ const recommended = Object.entries(platform.downloads).find((e) => e[1].recommended); -
+

{typeof platform.title === "object" ? platform.title[architecture] : platform.title}

-

{typeof platform.title === "object" ? platform.description[architecture] : platform.description}

+

{typeof platform.title === "object" ? platform.description[architecture] : platform.description}

{#if recommended} {recommended[1].name} {/if} -
+
{#each Object.entries(platform.downloads).filter((e) => !e[1].recommended) as [format, download]} {download.name} diff --git a/apps/website/src/routes/feature-block.svelte b/apps/website/src/routes/feature-block.svelte new file mode 100644 index 000000000..982eea437 --- /dev/null +++ b/apps/website/src/routes/feature-block.svelte @@ -0,0 +1,14 @@ + + +
+ {imgAlt} +
+

{title}

+

{text}

+
+
\ No newline at end of file diff --git a/apps/website/src/routes/header.svelte b/apps/website/src/routes/header.svelte index 81c543865..af1a7f057 100644 --- a/apps/website/src/routes/header.svelte +++ b/apps/website/src/routes/header.svelte @@ -2,7 +2,7 @@ import DownloadNow from "./download-now.svelte"; -
+
Trilium Notes Logo diff --git a/apps/website/static/favicon.png b/apps/website/static/favicon.png deleted file mode 100644 index 825b9e65a..000000000 Binary files a/apps/website/static/favicon.png and /dev/null differ diff --git a/apps/website/static/favicon.png b/apps/website/static/favicon.png new file mode 120000 index 000000000..17ded225a --- /dev/null +++ b/apps/website/static/favicon.png @@ -0,0 +1 @@ +../../../apps/client/src/assets/icon.png \ No newline at end of file diff --git a/apps/website/static/screenshots/macos/dark.png b/apps/website/static/screenshots/macos/dark.png new file mode 100644 index 000000000..2eae66f18 Binary files /dev/null and b/apps/website/static/screenshots/macos/dark.png differ diff --git a/apps/website/static/screenshots/macos/light.png b/apps/website/static/screenshots/macos/light.png new file mode 100644 index 000000000..a2b64b7fb Binary files /dev/null and b/apps/website/static/screenshots/macos/light.png differ diff --git a/apps/website/static/technical-features/grafana-metrics.png b/apps/website/static/technical-features/grafana-metrics.png new file mode 120000 index 000000000..1dd11db67 --- /dev/null +++ b/apps/website/static/technical-features/grafana-metrics.png @@ -0,0 +1 @@ +../../../../docs/User Guide/User Guide/Advanced Usage/1_Metrics_image.png \ No newline at end of file diff --git a/flake.nix b/flake.nix index 3b3736081..53cf37765 100644 --- a/flake.nix +++ b/flake.nix @@ -21,7 +21,7 @@ system: let pkgs = import nixpkgs { inherit system; }; - electron = pkgs.electron_35; + electron = pkgs."electron_${lib.versions.major packageJsonDesktop.devDependencies.electron}"; nodejs = pkgs.nodejs_22; pnpm = pkgs.pnpm_10; inherit (pkgs) @@ -30,6 +30,7 @@ lib makeBinaryWrapper makeDesktopItem + makeShellWrapper moreutils removeReferencesTo stdenv @@ -40,13 +41,13 @@ fullCleanSourceFilter = name: type: (lib.cleanSourceFilter name type) - || ( + && ( let baseName = baseNameOf (toString name); in # No need to copy the flake. # Don't copy local development instance of NX cache. - baseName == "flake.nix" || baseName == "flake.lock" || baseName == ".nx" + baseName != "flake.nix" && baseName != "flake.lock" && baseName != ".nx" ); fullCleanSource = src: @@ -55,6 +56,7 @@ src = src; }; packageJson = builtins.fromJSON (builtins.readFile ./package.json); + packageJsonDesktop = builtins.fromJSON (builtins.readFile ./apps/desktop/package.json); makeApp = { @@ -101,15 +103,20 @@ extraNativeBuildInputs = [ - makeBinaryWrapper moreutils # sponge nodejs.python removeReferencesTo ] ++ lib.optionals (app == "desktop") [ copyDesktopItems + # required for NIXOS_OZONE_WL expansion + # https://github.com/NixOS/nixpkgs/issues/172583 + makeShellWrapper wrapGAppsHook3 ] + ++ lib.optionals (app == "server") [ + makeBinaryWrapper + ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ xcodebuild darwin.cctools @@ -162,7 +169,9 @@ comment = meta.description; desktopName = "TriliumNext Notes"; categories = [ "Office" ]; - startupWMClass = "Trilium Notes Next"; + # TODO: electron-forge build has this set to PRODUCT_NAME (forge.config.cjs) + # But the plain build doesn't set this (or the app icon). + startupWMClass = "TriliumNext Notes"; }) ]; @@ -184,9 +193,11 @@ mkdir -p $out/{bin,share/icons/hicolor/512x512/apps,opt/trilium} cp --archive apps/desktop/dist/* $out/opt/trilium cp apps/client/src/assets/icon.png $out/share/icons/hicolor/512x512/apps/trilium.png - makeWrapper ${lib.getExe electron} $out/bin/trilium \ + makeShellWrapper ${lib.getExe electron} $out/bin/trilium \ "''${gappsWrapperArgs[@]}" \ + --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations --enable-wayland-ime=true}}" \ --set-default ELECTRON_IS_DEV 0 \ + --set TRILIUM_RESOURCE_DIR $out/opt/trilium \ --add-flags $out/opt/trilium/main.cjs ''; };